All Projects → opsani → opsani-ignite

opsani / opsani-ignite

Licence: Apache-2.0 license
Evaluate and improve the reliability, performance and efficiency of your Kubernetes applications.

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to opsani-ignite

healthz
Easily add health checks to your go services
Stars: ✭ 21 (+23.53%)
Mutual labels:  reliability
zap
⚡ fast http framework for rust
Stars: ✭ 51 (+200%)
Mutual labels:  efficiency
OpenCossan
OpenCossan is an open and free toolbox for uncertainty quantification and management.
Stars: ✭ 40 (+135.29%)
Mutual labels:  reliability
Howtheysre
A curated collection of publicly available resources on how technology and tech-savvy organizations around the world practice Site Reliability Engineering (SRE)
Stars: ✭ 6,962 (+40852.94%)
Mutual labels:  reliability
autoslot
Automatic __slots__ for your Python classes
Stars: ✭ 53 (+211.76%)
Mutual labels:  efficiency
Flutter-StoryBoard
A Flutter based application to showcase your custom widgets in your app that helps in easy review of the design.
Stars: ✭ 20 (+17.65%)
Mutual labels:  efficiency
mingine
A module to get the minimum usable engine(s)
Stars: ✭ 17 (+0%)
Mutual labels:  reliability
fp256
An efficient library for 256 bit integer arithmetic
Stars: ✭ 21 (+23.53%)
Mutual labels:  efficiency
redmine evm
Earned Value Management plugin for Redmine
Stars: ✭ 33 (+94.12%)
Mutual labels:  cost
neural-ranking-kd
Improving Efficient Neural Ranking Models with Cross-Architecture Knowledge Distillation
Stars: ✭ 74 (+335.29%)
Mutual labels:  efficiency
Awesome Sre
A curated list of Site Reliability and Production Engineering resources.
Stars: ✭ 7,687 (+45117.65%)
Mutual labels:  reliability
trackit2-home
TrackIt helps you to optimize your AWS cloud
Stars: ✭ 46 (+170.59%)
Mutual labels:  cost
OffsetGuided
Code for "Greedy Offset-Guided Keypoint Grouping for Human Pose Estimation"
Stars: ✭ 31 (+82.35%)
Mutual labels:  efficiency
Sentinel
A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
Stars: ✭ 18,071 (+106200%)
Mutual labels:  reliability
aws-usage-queries
This application bootstraps everything needed to query the AWS Cost and Usage reports through Amazon Athena. It also includes reference data and preconfigured SQL queries.
Stars: ✭ 28 (+64.71%)
Mutual labels:  cost
software-practice-thoughts
📚 🐣 软件实践文集。主题不限,思考讨论有趣有料就好,包含如 系统的模型分析/量化分析、开源漫游者指南、软件可靠性设计实践…… 🥤
Stars: ✭ 122 (+617.65%)
Mutual labels:  reliability
blur-up
A tool that creates preview images.
Stars: ✭ 28 (+64.71%)
Mutual labels:  efficiency
kraken
Chaos and resiliency testing tool for Kubernetes and OpenShift
Stars: ✭ 161 (+847.06%)
Mutual labels:  reliability
Launcher
🚀 A distraction-free minimal homescreen for Android.
Stars: ✭ 116 (+582.35%)
Mutual labels:  efficiency
js-symbol-tree
Turn any collection of objects into its own efficient tree or linked list using Symbol
Stars: ✭ 86 (+405.88%)
Mutual labels:  efficiency

Opsani Ignite for Kubernetes

Release Go Report Card License stability-alpha Github All Releases

Opsani Ignite analyzes applications running on a Kubernetes cluster in order to identify performance and reliability risks, as well as inefficient configurations. It then identifies specific corrective actions that align the application's configuration with deployment best practices for production environments and may also reduce the application's resource footprint.

CAUTION: Opsani Ignite is a new tool, still in alpha. We appreciate feedback and suggestions.

Download and Install Ignite

To install opsani-ignite, download the binary for your OS (macOS, Linux or Windows) from the latest release and place it somewhere along your shell's path. Check back often as we release updated analysis capabilities frequently; if your version is more than a week old, please see if a newer version is available before using it.

Note: on macOS, the first time you run the binary, macOS complain about it not being signed. After you get the error, go to 'System Preferences -> Security & Privacy -> General' and click 'allow opsani-ignite' to run. Alternatively, you can clone the repository and build your own binary. We're working to get signing for our macOS builds.

Run Ignite

To run Opsani Ignite, you will first want to set up port forwarding to the Prometheus API on your cluster. A typical command looks like this (assuming your Prometheus is called prometheus-server and runs in the prometheus namespace):

kubectl port-forward service/prometheus-server 9090:80 -n prometheus

Once port forwarding is active, run the opsani-ignite executable, providing the URL to the port-forwarded Prometheus API:

opsani-ignite -p http://localhost:9090

Opsani Ignite works in three phases: discovery, analysis and recommendations.

Phase 1: Discovery

On startup, Ignite discovers the applications running on the Kubernetes cluster. By querying your Prometheus monitoring system, Ignite finds all non-system namespaces and the deployment workloads running in them; it then obtain their key settings and metrics.

discovery

By default, Ignite looks at the last 7 days of metrics for each application to capture most daily and weekly load and performance variations.

Phase 2: Analysis

Ignite analyzes each application, looking at pods and containers that make up the application in order to uncover specific omissions of best practices for reliable production deployments. It looks at important characteristics such as the pod's quality of service (QoS), replica count, resource allocation, usage, limits, and processed load. Ignite then identifies areas requiring attention that are either causing or can cause performance and reliability issues.

analysis

In addition, Ignite determines whether the application is overprovisioned and has a higher-than-necessary cloud spend. In these cases, it also estimates the likely savings that can be obtained through optimization.

Phase 3: Recommendations

When an application is selected (pressing Enter in the table of apps), Ignite produces a set of actionable recommendations for improving the efficiency, performance, and reliability of the application. The recommendations fall into several categories, including production best practices (for example, setting resource requests and limits), as well as optimal and resilient operation optimization recommendations. Applying these recommendations results in improved performance and efficiency, as well as increased resilience of their applications under load.

recommendations

Optimization Recommendations

Opsani Ignite provides analysis and a number of additional recommendations to improve performance, reliability and efficiency.

Best practices require correctly setting resource requirements in a way that meets the performance and reliability requirements of an application (typically, latency and error rate service level objectives), while using assigned resources efficiently to control cloud costs. These values can be discovered manually, often through an onerous and repetitive manual tuning process.

They can also be automatically identified using automatic optimization services, such as the Opsani optimization-as-a-service tool. Those who are interested in how continuous optimization can remediate these issues can go to the Opsani website, set up a free trial account and attach the optimizer to their application. Connecting an application to the optimizer typically takes 10-15 minutes and, in a few hours, produces concrete, tested resource specifications that can be applied using a simple kubectl command.

Interactive... Stdout... or YAML output

By default, Ignite is text-based interactive tool (using the fantastic tview package, familiar to those who use the equally magnificent k9s tool). Ignite's command line options can change the output to simple stdout text view and even full-detail YAML output that can be used to integrate Ignite into your dashboards and higher level tools.

Command Line Options

Here are Ignite's command line options:

Usage:
  opsani-ignite [<namespace> [<deployment>]] [flags]

Flags:
      --config string           config file (default is $HOME/.opsani-ignite.yaml)
  -p, --prometheus-url string   URI to Prometheus API (typically port-forwarded to localhost using kubectl)
      --start string            Analysis start time, in RFC3339 or relative form (default "-7d")
      --end string              Analysis end time, in RFC3339 or relative form (default "-0d")
      --step string             Time resolution, in relative form (default "1d")
  -o, --output string           Output format (interactive|table|detail|yaml|servo.yaml)
  -b, --hide-blocked            Hide applications that don't meet optimization prerequisites
      --debug                   Display tracing/debug information to stderr
  -q, --quiet                   Suppress warning and info level messages
  -h, --help                    help for opsani-ignite

Feedback and Suggestions

The Ignite tool is the result of analyzing thousands of applications as part of our work at Opsani. We released it as an open source tool in order to share our experience and learning with the Kubernetes community and help improve application reliability and efficiency. The source code is available to review and to contribute.

We appreciate your feedback. Please send us a few lines about your experience--or, even better--a screenshot 📷 with the results (be they good or not so good) at . Issues and PRs are also a great way to help improve Ignite for everyone.

Troubleshooting

Opsani Ignite records diagnostic information in opsani-ignite.log. You can increase the logging level by adding the --debug option to the command line; running the YAML output option (-o yaml) is also a great way to see the full details.

Where To Get Help

You can reach out to Opsani Technical support at or, for faster response, use the chat bot 💬 on the Opsani web site.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].