目录
总结:基于友好的开源协议,是目前显示监控的首选。 设置接收者组和警报详细信息。 报警接收者的配置基于专用页面上配置的报警规则,并显示其触发状态。 这是借用的一句话哈哈这篇文章是容器监控实践系列的一部分。 有关完整内容,请参阅
概述
。 Grafana 是开源的,可以大规模使用。 指标数据可视化项目甚至指标报警。 它基于友好的Apache License 2.0开源协议,现在是prometheus监控查看的首选。 优点是:
1.用法:
配置方便:支持仪表板、面板、行等组合,支持折线图、条形图等各种图例。
美丽的图形:您可以选择深色或纯白色,也可以自己定义颜色。
模板很多:grafana模板非常活跃,有很多用户贡献的面板,可以直接导入使用。
支持多种数据源:grafana作为展示面板支持Graphite、ES、Prometheus等多种数据源。
简单的权限管理:管理员、查看者等多种角色控制。 等
2.二次开发:
如果默认的grafana不能满足您的需求,则需要进行二次开发。 官方也提供了很多支持。
该合同是 Apache License 2.0。 适合商业,可以自由修改,修改后甚至可以出售。
完整的API调用:权限、面板、用户、报警均支持API调用。
多种身份验证方式:OAuth、LADP、代理。 您可以连接到您公司的身份验证系统。
插件开发:如果不想直接修改代码,可以自己写插件
go+Angular+react:常用的技术栈,对于二次开发有用开发
prometheus + grafana是一个非常有用且强大的监控组合。 然后它改变了身份验证。 一开始我尝试使用grafana自己的不幸的是,警报功能没有用,不能在生产中使用。 由于官方不想解决的众多警报问题而被放弃。
部署
第1步:安装grafana
Grafana提供了多种部署方式。 如果您的显示警报位于 K8S 集群外部,您可以直接将它们部署在二进制文件中。 如果grafana本身是集群,或者管理端也是k8s集群,可以使用yaml进行部署。 :
部署配置:
apiVersion: apps/v1kind: Deploymentmetadata: 命名空间: kube-系统名称: grafanaspec: Replica: 1 选择器: matchLabels: App: grafana template: Metadata :命名空间:kube-系统注释:grafana-版本:“1.0”名称:grafana标签:应用程序:grafana规范:容器:-名称:grafana图像:grafana/grafana:5.1.0 imagePullPolicy:始终securityContext : runAsUser: 0 环境: - 名称: GF_SECURITY_ADMIN_PASSWORD 值: "admin" 端口: - 名称: grafana容器端口:3000 资源:请求:内存:“100Mi” cpu:“100m”限制:内存:“2048Mi”cpu:“1024m”
服务配置:
apiVersion:v1kind :服务元数据:命名空间:kube -系统名称:grafana注释:prometheus.io/scrape:“true”标签:名称:grafanaspec:选择器:app:grafana类型:LoadBalancer端口:-名称:grafana协议:TCP port: 3000
grafana配置文件中字段含义:
app_mode:应用程序名称,默认为生产。 [path]data:grafana用来存储sqlite3日志、临时文件和回复的地址路径。 :grafana 保存日志的路径 [server] http_addr:监听 IP 地址,默认为 0.0.0.0 http_port:监听端口,默认为 3000 协议:http 或 https,默认为 httpdomain:此设置为 root_url,grafana 通过浏览器访问的公共域名访问时默认为localhostenforce_domain。 如果主机头与domian不匹配,则跳转到正确的域。正确域的默认值是 falseroot_url。 这是在网络上访问 grafana 的完整路径 URL。 默认为 %(protocol)s://%(domain)s:%(http_port)s/router_logging:是否记录 Web 请求,默认为 falsecert_file:如果使用 https,则必须设置 cert_key 是:要使用 https,您需要设置 cert_key。必须配置数据库。 默认情况下,Grafana 必须使用数据库来存储用户和仪表板信息。 默认情况下它使用sqlite3来保存。 您还可以更改为其他数据库类型。 可以改成mysql、postgres、sqlite3。 默认是 sqlite3path。 仅 sqlite3 需要。 定义sqlite3主机的存储路径。 仅 mysql、postgres 需要。 默认值为 127.0.0.1。 3306name:grafana 的数据库名称,默认为 grafanauser:连接数据库的用户密码:数据库用户的密码 ssl_mode:仅使用 postgres [security] admin_user:grafana 的默认管理员用户,默认为 adminadmin_password:grafana 管理用户的默认密码,默认is adminlogin_remember_days: 保持登录的天数 Secret_key: 保持登录的签名disable_gravatar: [users]allow_sign_up: 是否允许一般用户登录。 如果设置为 false,则禁止用户登录。 默认为true,允许管理员创建用户并登录grafanaallow_org_create。 如果设置为 false,用户将无法创建新组织。 默认值为 trueauto_assign_org。 设置为 true 时,新用户将自动添加到 ID 为 1 的组织中。 如果设置为 false,则在创建新用户时添加新用户。组织 auto_assign_org_role:应用于新用户的规则。 默认为查看者,但也可以是管理员或编辑者。 [auth.anonymous]enabled:设置为 true 以启用匿名访问。 默认为 false org_name:设置组织名称 对于匿名用户 org_role:匿名用户设置的访问规则默认为 Github 项目查看器 [auth.github]。 显然,启用= falseallow_sign_up = falseclient_id = some_idclient_secret = some_secretscopes = user:emailauth_url = https://github.com/login/oauth/authorizetoken_url = https://github.com/login/oauth/access_tokenapi_url = https://api Google应用程序 .github.com/userteam_ids =allowed_domains =allowed_organizations = [auth.google],哈哈启用 = falseallow_sign_up = falseclient_id = some_client_idclient_secret = some_client_secretscopes = https://www.googleapis.com/auth/userinfo.profile https://www. googleapis.com/auth/userinfo.mailauth_url = https://accounts.google.com/o/oauth2/authtoken_url = https://accountts.google.com/o/oauth2/tokenapi_url = https://www.googleapis.com/oauth2/v1/userinfoallowed_domains = [auth.basic]enabled:设置为 true 时,http API 将启用基本身份验证 [ auth. ldap]enabled:设置为 true 以启用 LDAP 身份验证。 默认值为 falseconfig_file:如果启用了 LDAP,则指定 LDAP 配置文件。 /etc/grafana/ldap.toml [auth.proxy] 允许您通过 HTTP 反向配置身份验证设置。 代理已启用:默认为 false header_name:默认为 X-WEBAUTH-USERheader_property:默认为名称 usernameauto_sign_up:默认为 true。 如果用户不在grafana数据库中,则打开自动注册 [analytics]reporting_enabled:如果设置为true,匿名使用情况分析将发送到stats.grafana.org,主要针对授权实例、版本、仪表板,用于跟踪错误。 统计数据。 默认值为 truegoogle_analytics_ua_id:使用 GA 进行分析。 只需输入您的 GA ID [dashboards.json] 如果您有自动生成 JSON 格式仪表板的系统,请尝试启用此功能: 默认为 falsepath:完整路径 如果您想包含 JSON 仪表板,默认为 /var/lib/ grafana/dashboards [会话]提供者。 默认为文件。 值也可以是内存、mysql、postgresprovider_config。 该值的配置由您的提供商设置决定。 如果提供者是一个文件,这是一个 data/xxxx 路径类型。 如果提供程序是 mysql,则为 user:password@tcp(127.0.0.1:3306)/database_name。 如果提供程序是 postgres,user=a,password=b,host=localhost,port=5432 dbname=c,sslmode=disablecookie_name:grafana 的 Cookie 名称 cookie_secure:如果设置为 true,grafana 依赖于 https。 默认为 falsesession_life_time:会话过期时间。 ,默认是86400秒,小于24小时没有官方文档说明,是在配置文件中 [smtp]enabled = falsehost = localhost:25user =password =cert_file =key_file =skip_verify = falsefrom_address = admin@grafana.localhost [ [log] 模式:可以是控制台或文件。 默认是控制台、文件。 您还可以通过用逗号分隔来设置多个值。 buffer_len:通道缓冲区长度,默认为10000级:可以指定“Trace”、“Debug”、“Info”、“Warn”、“Error”、“Critical”。 默认为 info [log.console] Level:配置级别 [log.file] Level:配置级别 log_rotate:是否开启自动轮转 max_lines:单个日志文件最大行数,默认为 1000000 max_lines_shift:单个日志文件最大文件大小,默认为28,即256MB daily_rotate:是否每天轮换日志,默认为true max_days:日志过期时间,默认为7,7天后删除。
A 有几点需要牢记:
对所有资源添加请求和限制,防止主机资源耗尽。
grafana中的一些设置可以通过变量传递:管理员密码 GF_SECURITY_ADMIN_PASSWORD
如果想让grafana数据持久化,可以将其传递到卷或外部我们建议安装您的存储。 持久内容通常是面板组合。 可以导入和导出监控面板设置。
securityContext:如果由于版本问题收到grafana权限不足的消息,可以设置runAsUser: 0。
创建后,grafana可以使用服务暴露的端口。 地址显示页面:
登录成功后,会显示需要初始化的内容。
第2步:配置数据源
Grafana支持多种数据源以及“”下拉框选项。 这里我们选择Prometheus作为数据源。 HTTP访问方式选择proxy,输入grafana可以访问的URL。
由于grafana和prometheus在同一个k8s集群,所以这里使用svc地址
点击“测试”即可测试连接。
第 3 步:创建面板
数据源的下一步是如何更好地显示您的数据源Grafana支持多种不同类型的图表,包括Graph、singlestat和Table,它们可以组合成不同的格式。 首先,创建一个demo:保存现有模板的快捷键是Ctrl + S
。所有面板均位于左上角下拉框中:
也可以导入已有的面板(仪表板),大家提供的模板地址:https:// grafana .com/dashboards
选择左上角的 ➕ 符号进行导入。 导入有两种格式:
URL直接导入:粘贴对应的模板URL。 前提是grafana必须能够访问外网。
上传json文件:通常在迁移过程中用于导出然后导入现有的json。
Grafana 有许多面板和图表配置。 接下来,我们将讨论一些常用的功能。 设置项
常用设置
示例:K8S节点数趋势图
编辑时默认图表中输入的指标及其内容如下:
数据源:输入刚刚配置的数据源名称。 这是普罗米修斯。
A和B指的是以下数字: 这个照片页。 线。 这是A行。 右侧的小眼睛表示该行是否隐藏。
A行在输入框中输入查询语句。 这里我们将参考规范的promsql并提供图例。 格式参考A行。 显示名称
除了metric之外,还有几个选项,其含义如下:
常规:通常,配置其他项目后,您可以返回并配置常规。 通常,配置标签中仅使用“Title”。 这是图表标题。 这里是节点数等。
Title:图表标题;Description:图表说明。 Span:图表间距,前端不需要设置。 您可以手动调整图表的大小。 高度:图表的高度。 无需配置。 图表高度可以在前端手动调整。 透明:背景是否透明。 默认情况下不选中。 如果您认为不需要深灰色背景,可以勾选此选项。 模板和向下钻取/详细信息链接的用处不大,可以忽略。
我技巧:更重要的是,上面显示了如何构造指标表达式和指标线的示例。
Axes:在哪里配置数据轴,比如偏移缩放、格式转换等。
Legend:图例,是否限制以及如何显示
显示:显示线宽、排序方式、空值处理等相关设置。
Alerts:报警设置,grafana支持很少见的显示图表报警,但是那个报警只支持单个图表,模板不能嵌套,所以有点没用。 例如,如果左上角有一个下拉框用于过滤节点,并且向图表中传递了一个变量,则如果配置了警报,则配置失败。 报错为:“警报查询中不支持模板变量”
TimeRange:配置单个图表的显示时间,例如24小时内的数据。
覆盖相对时间:覆盖右上角的时间选择并设置要显示的时间范围。 这里我们设置24小时(单位可选)。 添加时间平移:偏移量设置如下: 例如输入2h表示不显示过去2小时的数据。 隐藏时间的时间信息:如果您在上面设置了相对时间,则该图表的时间信息将显示在图表上。 选择此处可隐藏显示的信息。
更详细的设置可以在 https://grafana.com/docs/features/panels/graph/ 找到。
变量设置:
在一些复杂的场景下,可能需要传递变量。 例如,如果你有多台机器,每台机器都应该显示CPU内存和其他指标。 机器列表是动态的,所以此时可以使用变量。 示例:
首先在面板设置中选择变量。 请注意,这是面板设置,而不是全局设置。 设置
输入下拉框选项的名称、数据获取公式、更新周期、有无ALL选项等,然后保存。
下一步,指定Masu在图表中使用此变量
在指标中,只需在匹配表达式中写入变量 $Node 即可。
Grafana 中的变量支持高级匹配。 例如,$Node.* 表示以 Node 开头的字符。 变量可以让您实现多级过滤,以满足更复杂的需求,例如查看 Pod 资源。
p>
变量详细信息:- a-变量是什么?
警报设置
grafana v4.0版本开始引入报警功能。
继续以节点数为例,设置如下规则。
如果可用节点数小于3,发送报警至demo@126.compre>
alert is 支持avg、sum 和其他表达式,但持续时间取决于数据本身收集的频率。 需要进行更多测试。
通知:设置收件人组和警报详细信息。 设置警报收件人是在专用警报页面上完成的。
警报规则:配置并显示触发状态的警报规则。
报警邮件样式:
模板变量报警
以上报警设置方法有没有图表传递给变量。 如果出现上述选择节点和传入变量的图表,是没有办法支持的。
相关问题:https://github.com/grafana/gr...
官方详细解释了这个功能。 最新版本尚不支持。 我借用了问题里的一句话,哈哈哈
如果给警报添加模板支持就太好了。 不然这个功能就显得有点没用了。本文是容器监控实践的完整系列文章。 见下文。容器 - 监视器 - 书籍
评论前必须登录!
注册