摘要:简介本文主要介绍最新版本中的一些新功能以及如何实现。 主要亮点是用于临时数据探索和故障排除的新查询工作流程。 它已经处于测试阶段并正式发布。 更轻松的部署并提高安全性。 下面是处理日志部署的屏幕截图。 它主要提供部署到.
简介
本文主要介绍grafana6.0最新版本的一些新特性以及如何在k8s上部署。
grafana 6.0 概述
Grafana 的本次更新引入了查询和显示数据的新方法、支持日志数据以及许多其他功能。
主要亮点是:
探索 - 用于临时数据探索和故障排除的新查询工作流程。
Grafana Loki - 与 Grafana Labs 的新开源日志聚合系统集成。
仪表面板 - 用于新仪表的单独面板。
新的面板编辑器 UX 改进了面板编辑,并允许您在不同的可视化效果之间轻松切换。
Google Stackdriver 数据源已结束测试并正式发布。
Azure Monitor 插件已从外部插件移植到核心数据源。
React 插件支持使构建插件变得容易。
命名颜色包含在新的和改进的颜色选择器中。
删除用户会话存储使 Grafana 更易于部署并提高安全性。
事实上,Explore 和 Grafana Loki 是专门为 Grafana 发布的功能,旨在增强日志查看功能。 然而,loki这个受Prometheus启发的日志存储和检索框架尚未发布,也不正式推荐用于生产使用。 但是洛基这是一项值得大家关注的技术。 与k8s彻底耦合,可以用于k8s中对日志的特殊处理。
下面是使用Explore处理日志的截图。
grafana6.0的部署
我们主要提供grafana6.0。 如何部署到k8s。
由于我们的环境是AWS托管的k8s,所以需要小心pvc和svc,移植时需要进行一些修改。
下面是一个configmap,其中包含两个主要配置文件:ldap.toml和grafana.ini。 在真实的企业环境中,您需要连接单位的 LDAP,因此包含 ldap.toml。
apiVersion: v1kind: ConfigMapmetadata:labels: app: hawkeye-grafana name: hawkeye- ]grafana- cm namespace: sgtdata: ldap.toml: |- # 疑难解答获取详细的日志信息,在grafana.ini中启用LDAP调试日志记录 # [log] #filters = ldap:debug [[servers]] # LDAP服务器主机(多个主机之间用空格分隔) host = "ldap.xxx.org" # 默认端口是 389 或 636 if use_ssl = true port = 389 # 如果 LDAP 服务器支持 TLS,则设置为 true use_ssl = false # 设置设置为 true 以使用 STARTTLS 模式连接到 LDAP 服务器(创建不安全连接并升级到使用 TLS 的安全连接) start_tls = false # 设置为 true 以跳过 ssl 证书验证 ssl_skip_verify = false # 设置为根路径CA 指定证书或保留未设置以使用系统默认值 # root_ca_cert = "/path/to/certificate.crt" # 对需要证书的 LDAP 服务器进行客户端身份验证 # client_cert = "/path/to/client.crt" # client_key = "/path/to /client.key" # 查找用户绑定 dn. bind_dn = "cn=Manager,dc=xxx,dc=com" # 查找用户绑定密码。 # 如果密码包含#或;。 必须用三引号引起来。 示例 "" "#password;""" binding_password = "xxxxx" # 用户搜索过滤器,例如 "(cn=%s)" 或 "(sAMAccou)ntName=%s)" 或 "(uid=%s)" search_filter = "(cn=%s)" # 要搜索的基本 DNS 数组 search_base_dns = ["ou=tech,cn=hawkeye,dc=xxxx, dc= com"] ## 对于不支持 member_of 属性的 Posix 或 LDAP 设置,您可以定义以下设置。 ## 检查 grafana LDAP 文档以获取示例。 # group_search_filter = "(&(objectClass= posixGroup)(memberUid=% s) )" # group_search_base_dns = ["ou=groups,dc=grafana,dc=org"] # group_search_filter_user_attribute = "uid" # 指定 LDAP 使用的 LDAP 属性的名称 [servers.attributes] name = "givenName" last name = "sn " username = "cn" member_of = "memberOf" email = "email" # 将 LDAP 组映射到 grafana 组织角色 [[servers.group_mappings]] group_dn = "cn=admins ,dc=grafana,dc=org"org_role = "Admin" # 要使用户成为实例管理员 (Grafana Admin),请取消注释以下行。 # grafana_admin = true # Grafana 组织数据库 ID(可选)。 如果省略,则使用默认组织 (ID 1)。 # org_id = 1 [ [servers.group_mappings]] group_dn = "cn=users,dc=grafana,dc=org" org_role = "Editor" [[servers.group_mappings]] # 匹配所有(或没有 LDAP 组) 如果是这样,你可以这样使用它: 通配符 group_dn = "*" org_role = "Viewer" grafana.ini: |- #################### Grafana 配置示例 ##### # ## ########## # # 一切都有默认值,所以 # 你只需取消注释要更改的项目 # 可能的值:生产、开发 ;app_mode = Production #实例名称,默认为 HOSTNAME 环境变量如果 HOSTNAME 变量为空,请使用任何可用值或主机名 ;instance_name = ${HOSTNAME} ############################## # #### ## Path ##################################[Path] # grafana是一个临时文件,保存会话的路径,以及sqlite3数据库(如果使用);data = /var/lib/grafana # `data` 目录中早于指定时间的临时文件将被删除;temp_data_lifetime = 24h # 目录grafana 可以存储日志;logs = /var/log/grafana # grafana 自动扫描插件的目录;plugins = /var/lib/grafana/plugins # grafana 启动时以及包含在执行期间应用的配置文件的文件夹。 ;配置=conf/配置################################## 服务器###### ## ## # ####################### [server] # 协议 (http, https, socket);protocol = http # 要绑定的 IP 地址,如果为空 所有接口 ; http_addr = # 使用的http端口 http_port = 3000 # 用于从浏览器访问grafana的公共域名 ;domain = localhost # 如果主机头与域不匹配,则重定向到正确的域 # 防止DNS重新绑定攻击;enforce_domain = false # 在浏览器中使用的完整公共 URL。 用于重定向和电子邮件。 # 如果使用反向代理和子路径,请指定完整的 URL(带子路径)。 ;root_url = http://localhost:3000 # 记录网络请求。 router_logging = false # 相对工作路径 ;static_root_path = public # 启用 gzip ;enable_gzip = false# https 证书和密钥文件 ;cert_file = ;cert_key = # Unix 套接字路径 ;socket = ################################# #### 数据库 #################################### [数据库] # 可以配置数据库连接。 # 将类型、主机、名称、用户和密码指定为单独的属性或使用 url 属性指定为字符串。 # 选择“mysql”、“postgres”或“sqlite3” ;type = sqlite3 ; host = 127.0.0.1:3306 ;name = grafana ;user = root # 密码包含 # 或 ; ""#password;""" ;password = # URL 或上一个字段 # 示例: mysql://user:secret@host:port/database ;url = # 仅 "postgres", "disable", "require"或 "verify-full" ;ssl_mode = disable # 仅“sqlite3”,data_path 设置的相对路径 ;path = grafana.db # 最大空闲连接数设置默认为 2 ;max_idle_conn = 2 # 最大连接数设置默认为 0(意味着未设置) ;max_open_conn = # 默认连接最大生存期为 14400 (表示 14400 秒或 4 小时);conn_max_lifetime = 14400 # true 为记录 SQL 调用和执行时间设置。 log_queries = ######## ############################ 会话 ########## # # ######## ############## [Session] # "memory", "file", "redis", "mysql", "postgres", 默认是 is "file" ;provider = file # 提供程序配置选项 # memory: 还没有配置 # file: 会话目录路径,相对于 grafana data_path # redis: 类似 redis ser 的配置示例版本 `addr=127.0.0.1:6379,pool_size=100,db=grafana` # mysql: go-sql-driver/mysql DSN 配置字符串,例如: `user:password@tcp(127.0.0.1 : 3306 )/database_name` # postgres: user=a 密码=b 主机=localhost 端口=5432 dbname=c sslmode=disable ;provider_config = session # 会话 cookie 名称 ;cookie_name = grafana_sess # 如果仅通过 https 使用会话则默认为 false。 cookie_secure = false # 会话生存期,默认为 86400 ;session_life_time = 86400 #################################### # 数据proxy ########################## [dataproxy] # 启用数据代理日志记录。 默认为 false ;logging = false ### # ################################# 分析 ###### # ######### # ################### 【分析】# 发送服务器报告,使用情况每 24 小时发送到 stats.grafana.org。 # 不跟踪 IP 地址。 # 只是一个简单的计数器,用于跟踪正在运行的实例、仪表板和错误数量。 这非常有帮助。 # 将此选项更改为 false 以禁用报告。 ; reports_enabled = true # 设置为 false 以禁用对 https://grafana.net 的所有检查 # 对于较新的版本(grafana 本身和插件),将使用该检查 # 在 UI 视图中通知您 grafana 或插件存在更新# 此选项不会发送自动更新或信息 # 仅向 http://grafana.com 发送 GET 请求以获取最新版本; check_for_updates = true # Google Analytics 通用跟踪代码。 仅当您在此处指定 ID 时才有效 ;google_analytics_ua_id = # ###################################Security ################################## [Security] # 启动时创建的默认管理员用户 ;admin_user = admin #可以在首次启动 grafana 之前或在配置文件设置中更改默认管理员密码 ;admin_password = admin # 用于签名 ;secret_key = xxxxx # 自动 - 登录要记住的天数 ;login_remember_days = 7 ;cookie_username = grafana_user ;cookie_remember_name = grafana_remember # 禁用 gravatar 头像 ;disable_gravatar = false # 数据源代理白名单(ip_or_domain:端口以空格分隔);data_source_proxy_whitelist = # 防止暴力登录尝试禁用 ;disable_brute_force_login_protection = false ######### ####################### 快照 ########################## #[snapshots] # 快照共享选项 ;external_enabled = true ;external_snapshot_url = https://snapshots-origin.raintank.io ;external_snapshot_name = 发布到 snapshot.raintank.io # 删除过期快照 ;snapshot_remove_expired = true # ## ## ############################## 仪表板历史记录 ########### #### # # # [仪表板] # 要保留的仪表板版本数(每个仪表板)。 默认值:20,最小值:1 ;versions_to_keep = 20 #################################### 用户 # # # ########################## [users] # 禁用用户注册/注册 ;allow_sign_up = true # 管理员允许其他用户创建组织;allow_org_create = true # 设置为 true 可自动将新用户分配给默认组织 (ID 1)。 ;自动分配或g = true # 将自动分配默认角色的新用户(如果上面禁用设置为 true);auto_assign_org_role = Viewer #登录页面上用户字段的背景文本;login_hint = email 或 user # 默认 UI 主题 (' dark') ;default_theme = dark # 外部用户管理,这些选项影响组织用户的视图 external_manage_link_url = ;external_manage_link_name = ;external_manage_info = # 查看者可以在其浏览器中配置仪表板设置,可以编辑/检查,但不保存。 ;viewers_can_edit = false [auth] # 设置为 true 以禁用(隐藏)登录表单,默认为 false ;disable_login_form = false # 设置为 true 以禁用侧面菜单中的注销链接。使用 auth.proxy,默认为 false ;disable_signout_menu = false # 注销后重定向用户的 URL ;signout_redirect_url = ######################### ### ######## 匿名身份验证 ########################### [auth.anonymous] # 启用匿名访问 ;enabled = false # 指定用于未经身份验证的用户的组织名称 ;org_name = Main Org. # 指定未经身份验证的用户的角色 ;org_role = Viewer ######### ############ #### ########## Github 身份验证 ## ################### ## [auth.github] ;enabled = false ;allow_sign_up = true ;client_id = some_id ;client_secret = some_secret ;范围 = 用户:电子邮件,读取:org ;auth_url = https://github.com/login/oauth/authorize ; token_url = https://github.com/login/oauth/access_token ;api_url = https://api.github.com/user ;team_ids = ;allowed_organizations = ############################## ###### Google 身份验证 ######################## [auth.google] ;enabled = false ;allow_sign_up = true ;client_id = some_client_id ; client_secret = some_client_secret ;scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email ;auth_url = https://accounts.google. /oauth2/auth ;token_url = https://accounts.google.com/o/oauth2/token ;api_url = https://www.googleapis.com/oauth2/v1/userinfo ;allowed_domains = #### ## # ########################## 通用 OAuth ################ # ## ## ##### [auth.generic_oauth] ;启用 = false ;名称 = OAuth ;allow_sign_up = true ;client_id = some_id ;client_secret = some_secret ;scopes = user:email,read:org ;auth_url = https://foo.bar/login/oauth/authorize ;token_url = https://foo.bar/login/oauth/access_token ;api_url = https://foo.bar/user ;team_ids = ;allowed_organizations = ;tls_skip_verify_insecure = false ;tls_client_cert = ;tls_client_key = ;tls_client_ca = ######################## ############## Grafana.com 身份验证 ################### [auth.grafana_com] ;enabled = false ;allow_sign_up = true ;client_id = some_id ;client_secret = some_secret ;范围 = 用户:电子邮件 ;allowed_organizations = ################################## # ### 身份验证代理 ######################## [auth.proxy] ;enabled = false ;header_name = X-WEBAUTH[ k4 ] USER ; header_property = 用户名 ; 自动_sign_up = true ;ldap_sync_ttl = 60 ;白名单 = 192.168.1.1, 192.168.2.1 ;headers = 电子邮件:X-用户-电子邮件, 姓名:X-用户-姓名 ##### ## ########################### 基本身份验证 ################## # # # ##### [auth.basic] ;enabled = true ################################## ## 身份验证LDAP ######################## [auth.ldap] 已启用 = true ;config_file = /etc/grafana/ldap.toml ;allow_sign_up = true # ############################## SMTP / 电子邮件 ###### ## ### ###### ####### [smtp]enabled=truehost=smtp.exmail.qq.com:465user=noreply@xxx.com#如果密码包含#或;三引号 示例 """#password;""" 密码 = AFxxxxxxYoQ2G from_address =noreply@xxxx.com from_name = Hawkeye;cert_file= ;key_file = ;skip_verify = false ;from_address = admin@grafana.localhost ;from_name = Grafana # SMTP 对话框的 EHLO ID(默认为 instance_name) ;ehlo_identity = dumpboard.example.com [email] ;welcome_email_on_sign_up = false ### # ############################## 日志记录 ################# # # ####### [日志] # “控制台”、“文件”或“系统日志”之一。 默认是控制台和文件 # 使用空格分隔多个模式。 "console file" ;mode = console file # "debug"、"info"、"warn"、"error"、"ritic"之一,默认为"info" ;level = info # 为特定记录器设置不同级别可选设置用于配置。 Exfilters = sqlstore:debug ;filters = # 仅“控制台”模式 [log.console] ;level = # 日志行格式,有效选项is text, console, json ;format = console # 仅适用于“文件”模式 [log.file] ;level = # 日志行格式,有效选项为 text, console, json ;format = text # 这会导致启用自动日志轮转 ( switch 下的选项),默认为 true ;log_rotate = true # 单个文件最大行数,默认为 1000000 ;max_lines = 1000000 # 单个文件最大大小移位,默认为 28 为 1 < < 28,即 256MB ; max_size_shift = 28 # 每天对日志进行分段。 默认为 true ;daily_rotate = true # 日志文件过期天数(最大天数后删除),默认为 7 ;max_days = 7 [log.syslog] ;level = # 日志行格式,有效选项为文本, Console json ;format = text # Syslog 网络类型和地址。 这可以是 udp、tcp 或 unix。 胸罩(如果留下)nk,使用默认的 UNIX 端点。 ;网络 = ;地址 = # Syslog 功能。 有效值为user、daemon、local0到local7。 ;facility = # 系统日志标签。 默认情况下,使用进程 argv[0]。 ;标签 = ################################## 警报 ########## ## # ############## [alerting] # 禁用警报引擎和 UI 功能 ;enabled = true # 允许关闭警报规则将运行,但显示警报 UI ;execute_alerts = true # 新警报规则的默认设置将错误和超时分类为警报 (alerting, keep_state) ;error_or_timeout =alerting # Grafana 如何处理无数据或空值的默认设置。 警报 (alert, no_data, keep_state, ok) ;nodata_or_nullvalues = no_data #警报通知可以包含图像,但同时渲染许多图像可能会使服务器过载 # 此限制可以保护服务器免受渲染过载的影响并确保快速发送通知 ;concurrent_render_limit = 5 ########## ### ####################### 探索 ## ######################## ### [explore] # 启用探索部分;enabled = false ######### ###################### # ### 内部Grafana 指标 ##################### #### # HTTP API URL 中可用的指标 /metrics [metrics] # 禁用/启用内部指标 Enabled = true #发布间隔 ;interval_seconds = 10 # 发送内部指标到 Graphite [metrics.graphite] # 设置并启用地址设置(例如 localhost:2003) ;address= ;前缀 = prod.grafana.%(instance_name)s。 ################################## 分布式追踪 ############ [ 追踪.jaeger] # 通过设置将跟踪发送到 jaeger 的地址来启用(例如 localhost:6831) ;address = localhost:6831 # 创建新跨度时始终包含的标记。 ex (tag1:value1,tag2:value2) ;always_owned_tag = tag1:value1 # Type指定采样器的类型:const、probabilistic、rateLimiting或remote ;sampler_type = const # jaeger Samplerconfig param # "const"采样器,分别为0或 1 始终代表 false/true # 对于“概率”采样器,0 到 1 之间的概率 # 对于“rateLimiting”采样器,每秒的跨度数 # 对于“远程”采样器,参数为“与“Probabilistic”相同采样器“#表示从母舰接收实际采样率之前的初始采样率;sampler_param = 1 ################################# ###### Grafana.com 集成 ########################### # 直接从 Grafana.com 导入仪表板 URL 使用 [grafana_com]; URL = https://grafana.com ################################### ## 外部图像存储 # ## #################### [external_image_storage] # 将图像上传到公共服务器以包含在 Slack/电子邮件消息中用于启用。 # 您可以选择 (s3, webdav, gcs, azure_blob, local) ;provider = [external_image_storage.s3] ;bucket = ;region = ;path = ;access_key = ;secret_key = [external_image_storage.webdav] ;url = ;public_url = ;用户名=;Password = [external_image_storage.gcs] ;key_file = ;bucket = ;path = [external_image_storage.azure_blob] ;account_name = ;account_key = ;container_name = [external_image_storage.local] # 无需配置 [rendering] # 配置外部图像的选项 A 渲染像 https://github.com/grafana/grafana-image-renderer 这样的服务器 ;server_url = ;callback_url =---
输入以上所有内容 xxx一切都已改变,我们的重要信息已被隐藏。 大家应该根据自己的实际情况来设置和改变。
。 如果不需要LDAP认证,请删除configmap中的ldap.toml,并在grafana.ini中将true更改为false。
################################## 身份验证 LDAP ##### ## # ################## [auth.ldap]enabled = true ;config_file = /etc/grafana/ldap.toml ;allow_sign_up = true
部署 . 薯l 是:
apiVersion:apps/v1kind:部署元数据:名称:hawkeye-grafana 命名空间:sgt 标签:app:hawkeye-grafanaspec:副本:1 选择器:matchLabels:app :hawkeye [k4 ]grafana 模板:元数据:标签:应用程序:hawkeye-grafana 规格:容器:- 图像:grafana/grafana:6.0.0 名称:grafana imagePullPolicy: IfNotPresent # env: env: - 名称:GF_PATHS_PROVISIONING 值: /var/lib/grafana/provisioning resources: # keep request = 限制以将此容器保持在保证的类限制内: cpu: 100m 内存: 100Mi request: cpu: 100m 内存: 100Mi readinessProbe : httpGet: path: /login port: 3000 #InitialDelaySeconds: 30 # timeoutSeconds: 1 volumeMounts: - name: grafana-persistent-storage mountPath: /var/lib/grafana/ - name: config mountPath: /etc/grafana/ initContainers: - 名称: "init-chown-data" 图片: "busybox:latest" imagePullPolicy: "IfNotPresent" 命令: ["chown", "-R", "472:472", “/var/lib/grafana/”]volumeMounts:-名称:grafana-持久-存储挂载路径:/var/lib/grafana/子路径:“”卷:-名称:config configMap:名称: hawkeye-grafana-cm - 名称: grafana-persistent-storagepersistentVolumeClaim:claimName: hawkeye-grafana-claim---
注意,添加initContainers主要是为了解决挂载写入权限的问题。
service.yaml 为:
apiVersion: v1kind: Servicemetadata: 注释:service.beta.kubernetes.io/aws-load-balancer[k4 ]type : nlb 标签:app:hawkeye -grafana 名称:hawkeye -grafana 命名空间:sgtspec:类型:LoadBalancer 端口:- 名称:http 端口:80 协议:TCP targetPort:3000 选择器:app:hawkeye - grafana [ k4]--
pvc.yaml 是:
种类:持久 VolumeClaimapiVersion:v1metadata:名称:hawkeye-grafana -声明命名空间:sgtspec: accessModes: - ReadWriteOnce Resources: Request: Storage: 30Gi
如果成功则访问成功,可以通过admin/admin登录。
如您所见,“探索”图标已添加到左侧。
概述
Grafana 首先从 /usr/share/grafana/conf/defaults.ini 读取配置文件。然后它读取 /etc/grafana/grafana.ini 并读取相同参数的设置。 然后 /etc/grafana/grafana.ini 覆盖 /usr/share/grafana/conf/defaults.ini 中的设置。 命令行上设置的参数会覆盖 /etc/grafana/grafana.ini 中的相同参数。 最后,环境变量中的相同设置会覆盖命令行上的参数。
以下是一些默认的环境变量。
GF_PATHS_CONFIG /etc/grafana/grafana.ini
GF_PATHS_DATA /var/lib/grafana
GF_PATHS_HOME /usr/share/ Grafana
GF_PATHS_LOGS /var/log/grafana
GF_PATHS_PLUGINS /var/lib/grafana/plugins
GF_PATHS_PROVISIONING /etc/grafana/provisioning
评论前必须登录!
注册