grafana loki logs

Loki

grafana/loki-stack:单体模式
grafana/loki-canary:金丝雀;
grafana/loki-distributed:分布式;微服务模式,适合生产较大规模场景
grafana/loki-simple-scalable:简单可扩展,读写分离模式;

组件

  • Read: {QueryFrontend, Querier},
  • Write: {Ingester, Distributor},
  • Backend: {QueryScheduler, Ruler, Compactor, IndexGateway}

loki-distributed中Ingester、distributor、querier 和 query-frontend 组件是始终安装的,其他组件是可选的

loki-log

k8s alert

Alertmanager

conf

  • Global:全局配置,主要用来配置一些通用的配置,比如邮件通知的账号、密码、SMTP服务器、微信告警等。Global 块配置下的配置选项在本配置文件内的所有配置项下可 见,但是文件内其它位置的子配置可以覆盖 Global 配置;
  • Templates:用于放置自定义模板的位置;
  • Route:告警路由配置,用于告警信息的分组路由,可以将不同分组的告警发送给不同 的收件人。比如将数据库告警发送给 DBA,服务器告警发送给 OPS;
  • nhibit_rules:告警抑制,主要用于减少告警的次数,防止“告警轰炸”。比如某个宿主机 宕机,可能会引起容器重建、漂移、服务不可用等一系列问题,如果每个异常均有告警, 会一次性发送很多告警,造成告警轰炸,并且也会干扰定位问题的思路,所以可以使用 告警抑制,屏蔽由宿主机宕机引来的其他问题,只发送宿主机宕机的消息即可;
  • Receivers:告警收件人配置,每个 receiver 都有一个名字,经过 route 分组并且路由后 需要指定一个 receiver,就是在此位置配置的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
global:
#"resolved"或"firing",firing->time->resolved
resolve_timeout: 5m
http_config:
follow_redirects: true
enable_http2: true
smtp_hello: localhost
smtp_require_tls: true
# 邮件
smtp_smarthost: 'smtp.exmail.qq.com:25'
smtp_from: 'xxx@xxx.com'
smtp_auth_username: 'xxx@xxx.com'
smtp_auth_password: 'xxx'
#企业微信
# wechat_api_url: https://qyapi.weixin.qq.com/cgi-bin/

route:
# 默认告警通知接收者,凡未被匹配进入各子路由节点的告警均被发送到此接收者
receiver: default-receiver
continue: false
group_wait: 10s
# 再次告警时间间隔
group_interval: 5m
# 通知成功未恢复,再次告警时间间隔
repeat_interval: 3h
receivers:
- name: default-receiver
templates:
- /etc/alertmanager/*.tmpl

jenkins

jenkins

1
2
3
https://gitee.com/tookoff/x-spring-boot.git

https://gitee.com/tookoff/x-spring-boot-ui.git
1
2
3
sh  'java --version'
sh 'git --version'
sh 'mvn --version'

密码

删除Jenkins目录下config.xml文件中下面代码

1
2
3
4
5
6
7
8
<useSecurity>true</useSecurity>  
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
<denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>

重新设密码

dae2b24cef9a4edd80fbd8453020062b

备份mysql

mysqldump

order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

all-databases

1
mysqldump -uroot -proot --all-databases >/tmp/all.sql

databases

1
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
1
2
3
4
5
#不导出表结构 仅导出数据  -t
mysqldump -uroot -p123456 -P3305 --databases k8s_grafana -t >~/backup/k8s_grafana_data.sql
#不导出任何数据,只导出数据库表结构 -d
mysqldump -uroot -p123456 -P3305 --databases grafana -d >~/backup/k8s_grafana_table.sql

tables

1
mysqldump -uroot -proot --databases db1 --tables a1 a2  >/tmp/db1.sql

where 条件过滤

1
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1'  >/tmp/a1.sql

no-data 表结构

k8s storage

k8s 存储制备器

实现方式

https://github.com/kubernetes-sigs/sig-storage-lib-external-provisioner

nfs

kubernetes集群所有节点需要安装nfs客户端

https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

1
2
3
4
5
6
7
helm install -f ./nfs-subdir-external-provisioner/values.yaml  ./nfs-subdir-external-provisioner \
-n nfs-provisioner \
--set storageClass.name=nfs-client \
--set storageClass.defaultClass=false \
--set nfs.server=192.168.1.11 \
--set nfs.path=/opt/dynamic-storage \
--generate-name

通过该配置自动创建

–set global.storageClass=nfs-client

删除pod后如何重新挂载原来的卷

载入天数...载入时分秒... ,