Grafana高可用-LDAP

在这里插入图片描述

一. grafana高可用

1. 迁移之前的 grafana

sqlitedump.sh

#!/bin/bash
DB=$1
TABLES=$(sqlite3 $DB .tables | sed -r 's/(\S+)\s+(\S)/\1\n\2/g' | grep -v migration_log)
for t in $TABLES; doecho "TRUNCATE TABLE $t;"
done
for t in $TABLES; doecho -e ".mode insert $t\nselect * from $t;"
done | sqlite3 $DB

将grafana.db 转为mysql的sql文件

  • 找到 grafana 的 grafana.db,得到sql文件,source到mysql上即可
sh sqlitedump grafana.db >grafana.sql

2. 部署

  • 将数据存储到 mysql

1) mysql

  • grafna会自己初始化库,前提是需要创建出来
apiVersion: apps/v1
kind: PersistentVolumeClaim
metadata:name: mysqlnamespace: monitor
spec:storageClassName: monitor-nfs-storageaccessModes:- ReadWriteManyresources:requests:storage: 10Gi
#apiVersion: v1
#kind: ConfigMap
#metadata:
#  name: my.cnf
#  namespace: monitor
#data:
#  my.cnf: |
#    [mysqld]
#    port=3306
#---
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: mysqlname: mysqlnamespace: monitor
spec:selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- image: mysql:5.7name: mysqlenv:- name: MYSQL_ROOT_PASSWORDvalue: Man10f&3^H_98est$#valueFrom:#  secretKeyRef:#    name: mysql-root-password#    key: passwordports:- containerPort: 3306volumeMounts:- name: mysqlvolumemountPath: /var/lib/mysql#  - name: mysql-conf#    mountPath: /etc/mysql/my.cnf#    subPath: my.cnfvolumes:- name: mysqlvolumepersistentVolumeClaim:claimName: mysql#- name: mysql-conf#  configMap:#    name: my.cnf
---
apiVersion: v1
kind: Service
metadata:labels:app: mysqlname: mysqlnamespace: monitor
spec:selector:app: mysqltype: ClusterIPports:- port: 3306protocol: TCPtargetPort: 3306
mysql -h mysql -p
create database grafana;
use grafana;
CREATE USER 'grafana'@'%' IDENTIFIED BY 'Man10f&3^H_98est$';
GRANT all on *.* TO 'grafana'@'%';
# 导入数据
source /grafana.sql

2). grafna

  • 配置文件需要改为如下的,其他的配置自行添加上去,这里只是mysql的配置
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: grafananamespace: monitor#annotations:#volume.beta.kubernetes.io/storage-class: "nfs"
spec:storageClassName: monitor-nfs-storageaccessModes:- ReadWriteManyresources:requests:storage: 10Gi
kind: ConfigMap
apiVersion: v1
metadata:name: grafana-confignamespace: monitor
data:grafana.ini: | [database]type = mysqlhost = mysql.prometheus.svc.cluster.local:3306name = grafanauser = grafanapassword = Man10f&3^H_98est$[auth.ldap]enabled = trueconfig_file = /etc/grafana/ldap.toml[log]level = debug---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: grafananamespace: monitor
spec:rules:- host: grafana-panel.yee.comhttp:paths:- path: /pathType: Prefixbackend:service: name: grafanaport:number: 3000tls:- hosts:- grafana-panel.yee.comsecretName: 2022-yee.com
---
apiVersion: apps/v1
kind: Deployment
metadata:name: grafananamespace: monitor
spec:replicas: 2selector:matchLabels:app: grafanatemplate:metadata:labels:app: grafanaspec:securityContext:runAsUser: 0containers:- name: grafanaimage: harbor.yee.com:8443/library/grafana:8.5.0imagePullPolicy: IfNotPresentports:- containerPort: 3000name: grafanaenv:- name: GF_SECURITY_ADMIN_USERvalue: admin- name: GF_SECURITY_ADMIN_PASSWORDvalue: Manifest%0304readinessProbe:failureThreshold: 10httpGet:path: /api/healthport: 3000scheme: HTTPinitialDelaySeconds: 60periodSeconds: 10successThreshold: 1timeoutSeconds: 30livenessProbe:failureThreshold: 3httpGet:path: /api/healthport: 3000scheme: HTTPperiodSeconds: 10successThreshold: 1timeoutSeconds: 1resources:limits:cpu: 2memory: 2Girequests:cpu: 150mmemory: 512MivolumeMounts:- mountPath: /var/lib/grafananame: storage- mountPath: /etc/grafana/grafana.inisubPath: grafana.ininame: configvolumes:- name: storagepersistentVolumeClaim:claimName: grafana- name: configconfigMap:name: grafana-config---
apiVersion: v1
kind: Service
metadata:name: grafananamespace: monitor
spec:type: ClusterIPports:- port: 3000selector:app: grafana

3. LDAP

  • grafana 使用加域,使用域账号登录,需要配置LDAP,LDAP是一种通讯协议,如同HTTP是一种协议一样的,
  • 域控的dn, 在 LDAP 目录中:
    • DC (Domain Component)
    • CN (Common Name)
    • OU (Organizational Unit)
  • An LDAP 目录类似于文件系统目录. 下列目录: DC=redmond,DC=wa,DC=microsoft,DC=com,如果我们类比文件系统的话,可被看作如下文件路径: Com\Microsoft\Wa\Redmond
  • 例如:cn=test 可能代表一个用户名, ou=developer 代表一个active directory中的 组织单位。这句话的含义可能就是说明test这个对象处在domainname. com域的developer组织单元中
kind: ConfigMap
apiVersion: v1
metadata:name: grafana-confignamespace: prometheus
data:grafana.ini: | [database]type = mysqlhost = mysql.prometheus.svc.cluster.local:3306name = grafanauser = grafanapassword = Man10f&3^H_98est$[auth.ldap]enabled = trueconfig_file = /etc/grafana/ldap.toml[log]level = info
---
kind: ConfigMap
apiVersion: v1
metadata:name: grafana-ldapnamespace: prometheus
data:ldap.toml: |# To troubleshoot and get more log info enable ldap debug logging in grafana.ini# [log]# filters = ldap:debug[[servers]]# Ldap server host (specify multiple hosts space separated)host = "192.168.1.250"# Default port is 389 or 636 if use_ssl = trueport = 389# Set to true if LDAP server should use an encrypted TLS connection (either with STARTTLS or LDAPS)use_ssl = false# If set to true, use LDAP with STARTTLS instead of LDAPSstart_tls = false# set to true if you want to skip ssl cert validationssl_skip_verify = false# set to the path to your root CA certificate or leave unset to use system defaults# root_ca_cert = "/path/to/certificate.crt"# Authentication against LDAP servers requiring client certificates# client_cert = "/path/to/client.crt"# client_key = "/path/to/client.key"# Search user bind dn#bind_dn = "CN=xingguang,OU=运维组,OU=研发中心,OU=ooo,DC=SDRAD,DC=COM"bind_dn = "ooo"		# 根据自己的写# Search user bind password# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""bind_password = 'dfs@52%2(89!ykWc'# User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)"#search_filter = "(&(objectCategory=person)(objectClass=user)(!(userAccountControl=514))(name=*))"search_filter = "(sAMAccountName=%s)"#search_filter = "(&(objectCategory=person)(objectClass=user)(!(userAccountControl=514))(sAMAccountName={login}))"# An array of base dns to search throughsearch_base_dns = ["OU=ooo,DC=sdrad,DC=com"]## For Posix or LDAP setups that does not support member_of attribute you can define the below settings## Please check grafana LDAP docs for examples# group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"# group_search_base_dns = ["ou=groups,dc=grafana,dc=org"]# group_search_filter_user_attribute = "uid"# Specify names of the ldap attributes your ldap uses[servers.attributes]name = "displayName"#surname = "sn"#username = "username"username = "sAMAccountName"#member_of = "memberOf"email =  "mail"# Map ldap groups to grafana org roles[[servers.group_mappings]]group_dn = "CN=xxx,OU=运维组,OU=研发中心,OU=ooo,DC=SDRAD,DC=COM"org_role = "Admin"# To make user an instance admin  (Grafana Admin) uncomment line belowgrafana_admin = true# The Grafana organization database id, optional, if left out the default org (id 1) will be used#org_id = 1[[servers.group_mappings]]group_dn = "CN=xxx,OU=运维组,OU=研发中心,OU=ooo,DC=SDRAD,DC=COM"org_role = "Editor"#org_id = 2#[[servers.group_mappings]]## If you want to match all (or no ldap groups) then you can use wildcardgroup_dn = "*"org_role = "Viewer"#org_id = 3
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: grafananamespace: prometheus
spec:rules:- host: grafana-test.yee.net.cnhttp:paths:- path: /pathType: Prefixbackend:service: name: grafanaport:number: 3000tls:- hosts:- grafana-test.yee.net.cnsecretName: yee.net.cn
---
apiVersion: apps/v1
kind: Deployment
metadata:name: grafananamespace: prometheus
spec:replicas: 2selector:matchLabels:app: grafanatemplate:metadata:labels:app: grafanaspec:nodeSelector:ldap: "true"securityContext:runAsUser: 0containers:- name: grafanaimage: harbor.yee.net.cn/library/grafana:8.5.0imagePullPolicy: IfNotPresentports:- containerPort: 3000name: grafanaenv:- name: GF_SECURITY_ADMIN_USERvalue: admin- name: GF_SECURITY_ADMIN_PASSWORDvalue: Manifest%0304OURreadinessProbe:failureThreshold: 10httpGet:path: /api/healthport: 3000scheme: HTTPinitialDelaySeconds: 60periodSeconds: 10successThreshold: 1timeoutSeconds: 30livenessProbe:failureThreshold: 3httpGet:path: /api/healthport: 3000scheme: HTTPperiodSeconds: 10successThreshold: 1timeoutSeconds: 1resources:limits:cpu: 2memory: 2Girequests:cpu: 150mmemory: 512MivolumeMounts:- mountPath: /var/lib/grafananame: storage- mountPath: /etc/grafana/grafana.inisubPath: grafana.ininame: config- mountPath: /etc/grafana/ldap.tomlsubPath: ldap.tomlname: ldapvolumes:- name: storagepersistentVolumeClaim:claimName: grafana- name: configconfigMap:name: grafana-config- name: ldapconfigMap:name: grafana-ldap---
apiVersion: v1
kind: Service
metadata:name: grafananamespace: prometheus
spec:type: ClusterIPports:- port: 3000selector:app: grafana

同样 Deployment 需要加一些配置

        volumeMounts:- mountPath: /var/lib/grafananame: storage- mountPath: /etc/grafana/grafana.inisubPath: grafana.ininame: config- mountPath: /etc/grafana/ldap.tomlsubPath: ldap.tomlname: ldapvolumes:- name: storagepersistentVolumeClaim:claimName: grafana- name: configconfigMap:name: grafana-config- name: ldapconfigMap:name: grafana-ldap

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中vim中进行替换/批量替换

Linux中vim中进行替换/批量替换 一:在 Vim 中进行文本替换的操作是通过使用 :s(substitute)命令来实现的。这里是一些基本的替换命令 替换当前行的第一个匹配项: :s/old/new/这将替换当前行中第一个出现的 “old” 为 “new”。 替换当前行的所有匹配项…

Linux ContOS7 日志管理(rsyslog)

目录 01. rsyslog 记录日志程序 02.日志文件 03.日志等级 Linux 日志文件是记录 Linux 系统运行信息的文件。它们类似于人类的日记,记录了系统的各种活动,如用户登录、进程启动、错误消息等。 Linux 日志文件通常存储在 /var/log/ 目录中。该目录包含…

Linux应用程序管理(rpm yum 源码安装)

一.Linux应用程序基础 当我们主机安装Linux操作系统时候,也会同时安装一些软件或网络服务等等,但是随着系统一起安装的软件包毕竟他是少数的,能够实现的功能也是有限的,如果需要实现更丰富的功能,那就需要安装应用程序…

构建数字化金融生态系统:云原生的创新方法

内容来自演讲:曾祥龙 | DaoCloud | 解决方案架构师 摘要 本文探讨了金融企业在实施云原生体系时面临的挑战,包括复杂性、安全、数据持久化、服务网格使用和高可用容灾架构等。针对网络管理复杂性,文章提出了Spiderpool开源项目,…

The Cherno C++笔记 03

目录 Part 07 How the C Linker Works 1.链接 2.编译链接过程中出现的错误 2.1 缺少入口函数 注意:如何区分编译错误还是链接错误 注意:入口点可以自己设置 2.2 找不到自定义函数 2.2.1缺少声明 2.2.2自定义函数与引用函数不一致 2.3 在头文件中放入定义 …

git入门以及如何推送代码到云端

Gitee(码云)是开源中国于2013年推出的基于Git的代码托管平台、企业级研发效能平台,提供中国本土化的代码托管服务。 地址: Gitee - 基于 Git 的代码托管和研发协作平台 步骤1:创建远程仓库 在Gitee上创建一个新的远…

c# OpenCV 检测(斑点检测、边缘检测、轮廓检测)(五)

在C#中使用OpenCV进行图像处理时,可以使用不同的算法和函数来实现斑点检测、边缘检测和轮廓检测。 斑点检测边缘检测轮廓检测 一、斑点检测(Blob) 斑点检测是指在图像中找到明亮或暗的小区域(通常表示为斑点)&#…

java类和对象的思想概述

0.面向对象Object OOP——名人名言:类是写出来的,对象是new出来的 **> 学习面向对象的三条路线 java类以及类成员:(重点)类成员——属性、方法、构造器、(熟悉)代码块、内部类面向对象特征&…

【论文解读】CNN-Based Fast HEVC Quantization Parameter Mode Decision

时间:2019 年 级别:SCI 机构:南京信息工程大学 摘要 随着多媒体呈现技术、图像采集技术和互联网行业的发展,远程通信的方式已经从以前的书信、音频转变为现在的音频/视频。和 视频在工作、学习和娱乐中的比例不断提高&#xff0…

bugku-misc-这是一张单纯的图片

附件:图片 1、查看属性 2、010 whex打开看看 可以看到html编码,将文件后缀,改成html,打开 即可

华为设备命令行操作基础

熟悉VRP命令行并且熟练掌握VRP配置是高效管理华为网络设备的必备基础。 设备初始化启动 管理员和工程师如果要访问在通用路由平台VRP上运行的华为产品,首先要进入启动程序。开机界面信息提供了系统启动的运行程序和正在运行的VRP版本及其加载路径。启动完成以后&am…

鸿蒙-ArkUI 常用布局容器对齐方式

概念 主轴:在布局容器中,默认存在两根轴,分别是主轴和交叉轴,不同的容器中主轴的方向不一样的。 在Column容器中主轴的方向是垂直方向。在Row容器中主轴的方向是水平方向。在Flex容器中可以通过direction参数设置主轴的方向&…

MySQL数据库 触发器

目录 触发器概述 语法 案例 触发器概述 触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的soL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录&am…

分布式搜索elasticsearch概念

什么是elasticsearch? elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容 目录 elasticsearch的场景 elasticsearch的发展 Lucene篇 Elasticsearch篇 elasticsearch的安装 elasticsearch的场景 elasticsear…

【SpringMVC】REST(Representation State Transfer)ful开发

REST全称Representation State Transfer,表现形式状态转换 文章目录 1. 为什么提出了REST?2. RESTful入门案例案例代码修改请求方式修改成RESTful风格,并以POST方式提交 RESTful格式下传参RESTful入门案例总结RequestBody,Reques…

Linux下编写zlg7290驱动(3)-键盘驱动编写

2.3. 数据处理实现 执行上述代码后系统中就注册了我们的input设备,接下来我们要做的是活得键盘的键值,zlg7290多可以支持64个按键,每个按键按下后都会产生一个中断,我们写驱动是可以使用轮询不断检测是否有按键也可以触发中断来判…

云原生之深入解析基于FunctionGraph在Serverless领域的FinOps的探索和实践

一、背景 Serverless 精确到毫秒级的按用付费模式使得用户不再需要为资源的空闲时间付费。然而,对于给定的某个应用函数,由于影响其计费成本的因素并不唯一,使得用户对函数运行期间的总计费进行精确的事先估计变成了一项困难的工作。以传统云…

git分支解析

1、概述和优点 在版本控制过程中,同时会推进多个任务,为此,就可以为每个任务创建单独的分支。开发人员可以把自己的任务和主线任务分离开来,在开发自己的分支的时候不会影响主分支。 分支的好处: 同时推进多个功能开发…

CSS自适应分辨率 amfe-flexible 和 postcss-pxtorem:Webpack5 升级后相关插件和配置更新说明

前言 项目对应的 webpack5 版本如下: npm i webpack5.89.0 -D npm i webpack-cli5.1.4 -D升级插件 说明一下,我更喜欢固定版本号,这样随机bug会少很多,更可控~ npm i postcss-loader6.1.1 -D npm i postcss-pxtorem6.0.0 -D配…

Postman创建及删除workspace工作空间

文章目录 一、Postman创建workspace工作空间二、Postman删除workspace工作空间 一、Postman创建workspace工作空间 打开Postman 点击 Workspaces → Create Workspaces 如图所示操作 工作空间创建完成 二、Postman删除workspace工作空间 点击 Workspaces → 选择要删除…