- 背景:
- 一. Grafana中的配置
- 鸣谢:
背景:
腾讯云CLB(负载均衡)与CLS(日志服务)集成。然后看日志服务CLS专栏有一篇 CLS 对接 Grafana的博文。个人就也想尝试一下。当然了我的grafana是 Prometheus-oprator方式搭建在kubernetes集群中的。详见:https://cloud.tencent.com/developer/article/1807805。 下面开始记录下自己搭建的过程
一. Grafana中的配置
参照https://cloud.tencent.com/developer/article/1785751,但是饼形图的插件个人已经在Prometheus-oprator的搭建过程中安装了。现在重要的就是按照cls的插件和更改grafana的配置
1. 关于Grafana cls插件的安装
插件安装的过程还是简单的
###查看grafana pods的名称
kubectl get pods -n monitoring
###进入grafana容器
kubectl exec -it grafana-57d4ff8cdc-8hwsq bash -n monitoring
###下载cls插件并解压
cd /var/lib/grafana/plugins/
wget https://github.com/TencentCloud/cls-grafana-datasource/releases/latest/download/cls-grafana-datasource.zip
unzip cls-grafana-datasource.zip
至于版本的要求验证就忽略了….因为我的granfa image版本是7.4.3,是已经确认过的……。至于如何让grafana插件加载生效呢?我一遍都是用最笨的方法delete一下pod……
kubectl delete pods grafana-57d4ff8cdc-8hwsq -n monitoring
kubectl get pods -n monitoring
当然了这个时候如果进入grafana确认插件的安装成功与否一般的(grafana-cli plugins install通过官方源下载或者安装的)就可以了。但是安装cls这个插件是不可以的……为什么呢?强调一下腾讯云这个插件是一个非官方认证的插件。如果需要信任非官方的插件grafana是要开启配置参数的
2. 如何修改grafana的配置文件呢?
参照https://cloud.tencent.com/developer/article/1785751。部署完了插件的安装,是要修改grafana.ini的配置文件的。仔细观察一下prometheus-operator中 grafana的配置文件是默认的,并没有其他方式进行挂载,那该怎么办呢? 参照:https://blog.csdn.net/u010918487/article/details/110522133
将grafana的配置文件以configmap的方式进行挂载
具体流程:
1. 将grafana容器中的grafana.ini文件复制到本地
就是复习一下kubectl cp命令了:
kubectl cp grafana-57d4ff8cdc-ms4z9:/etc/grafana/grafana.ini /root/grafana/grafana.ini -n monitoring
然后本地修改grafana.ini配置文件: 嗯: ;allow_loading_unsigned_plugins = 这一句配置修改为下面的这句
allow_loading_unsigned_plugins = tencent-cls-grafana-datasource
图中没有删除上面那句只是为了方便演示: 这配置的作用就是开启tencent-cls-grafana-datasource这个非认证插件的加载。
2. 将修改后的grafana.ini以configmap的方式挂载到kubernetes集群
kubectl create cm grafana-config --from-file=`pwd`/grafana.ini -n monitoring
3. 修改grafana-deployment.yaml挂载grafana-config
########volumeMounts部分新增以下内容:
- mountPath: /etc/grafana
name: grafana-config
readOnly: true
########volumes部分新增以下内容:
- configMap:
name: grafana-config
name: grafana-config
kubectl apply -f grafana-deployment.yaml -n monitoring
等待grafana pod 重新部署成功:
3. grafana dashboard中的配置
1. 在左侧导航栏中,单击【Creat Dashboards】。
2. 在 Data Sources 页面,单击【Add data source】。
3. 选中【Tencent Cloud Log Service Datasource】,并按照如下说明配置数据源
引用自:https://cloud.tencent.com/developer/article/1785751 | 配置项 | | | — | — | | Security Credentials | SecretId、SecretKey:API 请求密钥,用于身份鉴权。可前往 API 密钥管理 获取地址。 | | Log Service Info | region:日志服务区域简称。例如,北京区域填写ap-beijing。完整的区域列表格式请参考 地域列表。 Topic:日志主题ID 。 |
嗯登陆腾讯云后台cam控制台https://console.cloud.tencent.com/cam。快速新建用户,新建一个名为cls的用户:登陆方式:编程访问,用户权限:QcloudCLSReadOnlyAccess,可接收消息类型全部就注释掉了。
进行测试 sava&test。嗯 结果是显示操作未授权应该是下面的这个 果断进入腾讯云后台加上了QcloudCLSFullAccess的权限
再运行sava&test,ok成功。但是个人对权限比较敏感,这样的fullaccess的 都比较怕…腾讯云官方开源的好多组件对权限的声明都不是那么的多。 也希望能明确一下权限的边界。
4. 配置 dashboard
- 在左侧导航栏中,单击【Creat Dashboards】。
- 在 Dashboard 页面,单击【Add new panel】。
- 将数据源选择为您新建的日志数据源。如下图所示:
一下图片引用自https://cloud.tencent.com/developer/article/1785751
4. 展示图表
本来图表都该在上面搞完的。但是个人觉得还是单独列出来吧
1. 时间折线图
输入的 Query 语句如下所示:
* | select histogram( cast(__TIMESTAMP__ as timestamp),interval 1 minute) as time, count(*) as pv,count( distinct remote_addr) as uv group by time order by time limit 1000
- Format:选择 Graph,Pie,Gauge panel。
- Metrics:pv,uv。
- Bucket:无聚合列,不填写。
- Time : time。
记得在Visualization中选择折线图。 Graph 和Time Series两个出来的是一样的…也没有搞清楚区别.
2. 饼形图
搞不出来一般就是没有安装饼形图插件吧。一定记得前提安装了饼形图插件
输入的 Query 语句如下所示:
* | select count(*) as count, status group by status
- Format:选择 Graph,Pie,Gauge panel。
- Metrics:count。
- Bucket:status。
- Time:不是连续时间数据,不填写。
不管那种图表都的在Visualization选择要展现的形式啊…
3. 柱状图,压力图
柱状图,压力图(bar gauge)统计访问延时前10的页面
输入的 Query 语句如下所示:
* | select http_referer,avg(request_time) as lagency group by http_referer order by lagency desc limit 10
- Format:选择Graph,Pie,Gauge panel。
- Metrics:lagency。
- Bucket:http_referer。
- Time:不是连续时间数据,不填写
为什么我做出来跟https://cloud.tencent.com/developer/article/1785751中的不一样呢? 参照http://codetd.com/article/11171054 可能cls官方这文章木有考虑我太小白….,按照大佬的文章修改下OK了 但是 颜色是不是也搞的绚丽点?Color scheme Thresholds 两个的配置可以满足你的需要….哈哈哈
4. 表格Table
表格的应该就算是简单的了
输入的 Query 语句如下所示:
* | select remote_addr,count(*) as count group by remote_addr order by count desc limit 10