Python logging 配置为JSON格式
前言将日志json化输出
基本信息模块format显示消息的内置格式如果需要更改消息显示格式, 需要指定format
12345import logginglogging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)logging.debug('This message should appear on the console')logging.info('So should this')logging.warning('And this, too')
将输出
123DEBUG:This message should appear on the consoleINFO:So should thisWARNING:And this, too
可参考: LogRecord属性
配置JSON输出安装 python-json-logger配置JSON输出,我们需要安装第三方的包
1pip install python- ...
将Daemonset管理器容忍所有的Taints
前言我们都知道, kubernetes的daemonset控制器,可以将副本每个运行在集群中的所有节点中,并且 daemonset 控制器 默认会对Pod添加污点容忍度
容忍度健名
效果
版本
描述
node.kubernetes.io/not-ready
NoExecute
1.13+
当出现类似网络断开的情况导致节点问题时,DaemonSet Pod 不会被逐出。
node.kubernetes.io/unreachable
NoExecute
1.13+
当出现类似于网络断开的情况导致节点问题时,DaemonSet Pod 不会被逐出。
node.kubernetes.io/disk-pressure
NoSchedule
1.8+
node.kubernetes.io/memory-pressure
NoSchedule
1.8+
node.kubernetes.io/unschedulable
NoSchedule
1.12+
DaemonSet Pod 能够容忍默认调度器所设置的 unschedulable 属性.
node.kubernetes.io/network-un ...
Linux 使用小技巧
1. 快速清空文件的方法
1234567$ > access.log: > access.logtrue > access.logcat /dev/null > access.logecho -n "" > access.logecho > access.logtruncate -s 0 access.log
2. 快速生成大文件
1$ dd if=/dev/zero of=file.img bs=1M count=1024
3. 安全擦除硬盘数据
1$ dd if=/dev/urandom of=/dev/sda
4. 快速制作系统盘
1$ dd if=ubuntu-server-amd64.iso if=/dev/sdb
5. 查看某个进程的运行时间
123$ ps -p 10167 -o etimes,etimeELAPSED ELAPSED1712055 19-19:34:15
6. 时间戳的快速转换
1$ date -d@1234567890 +"%Y- ...
Elasticsearch集群Security
前言ES集群使用容器部署,并且开启认证
配置 transport TLS证书如果要启动认证功能, 就必须在transport端口添加TLS. 如果不加密, 则密码将已明文的方式在传输中暴露.
注意,transport 和 http 端口是两个端口,一个是内部集群通信时的端口,一个是客户端的端口, 此次配置的是集群通信时的端口.
elasticsearch默认集成了一个命令来简化证书生成的过程 elasticsearch-certutil
1. 创建一个ca颁发机构的签名证书,位置默认
12345root@es-node-1 16:21:49 0 ~ docker exec -it elasticsearch bashelasticsearch-certutil ca --pass noohle[root@20ba83496a6b elasticsearch]# lsLICENSE.txt NOTICE.txt README.textile bin config data elastic-stack-ca.p12 lib logs modules plugins
...
KubernetesCPU资源限制以及CPUThrottlingHigh告警问题
前言最近频繁收到服务器的告警
126.67% throttling of CPU in namespace monitoring for container node-exporter in pod node-exporter-kkmjf.
说是节流率已经达到了26%, 但是当我上线去查看监控的时候,发现当前的pod资源使用率是非常低的,远远低于限定指标,那这个告警到底是什么回事呢?
Kubernetes的CPU资源请求和限制的实现方式Kubernetes 使用做CPU资源的限制, 此调度器是集成在内核当中。简单的来说,CFS是通过添加了重分配周期和占用周期, 当一个进程在重分配周期内获得的CPU时间达到了占用周期,那么这个进程将不会在被调度,直到下一个重分配周期.
而CPU资源,则通过shares进行权重分配,每一个CPU权重值为1024. 如果一个节点中有4 core,而某个进程的权重为1024,那么这么进程只能使用1个CPU.
k8s使用了cgoup进行资源管理, 详细信息存储在虚拟文件系统(/sys/fs/cgroup)中。如果是CPU则为/sys/fs/cgroup/cpu ...
SpringCloud结合Kubernetes优雅下线
前言SpringCloud微服务架构中,微服务的上下线是不可避免的,但如果你的服务发现组件使用的是Eureka,那么默认最长会有90秒的延迟,其他应用才会感知到该服务下线,这意味着:该实例下线后的90秒内,其他服务仍然可能调用到这个已下线的实例。因此,该方式是不够优雅的 。
但是我们可以结合k8s,单个服务升级的过程中,不停止对外服务滚动更新,使得用户对整个升级过程无感知,从而实现服务的优雅升级。
操作1.开启/service-registry 端点
在application.yml中,添加此配置,从而暴露/service-registry 端点:
12345678910management: security: enabled: false health: solr: enabled: false endpoints: web: exposure: include: info,service-registry
服务在下线的时候发送发送POST请求到/actuator/service-registry 端点:
同时要延时90秒 ...
Django相关ORM操作总结
前言在此记录一下Django ORM的常用操作
常用字段
AutoField 自增字段
可设置主键primary_key=True
CharField 字符串
max_length 必填
BooleanField 布尔类型
integerField 整形
DateField 日期
与python里的datetime.date 相同,数据库字段内容为: 2018-08-30
DateTimeField 日期+时间
与python里的 datetime.datetime 相同, 数据库字段内容为: 2018-08-30 16:31:00
最后两个时间字段有两个参数auto_new = true 新增和编辑时保存当前时间auto_now_add = true 新增时保存当前时间
TextField 文本类型
常用字段参数
null 数据库可以为空
blank 用户输入可以为空
unique 唯一约束
verbose_name 提示信息
choice 让用户选择的数据,参数值为: choices=((1,'男'), (2, '女'))
defa ...
django前后端分离的一些问题及解决方案
前言django 前后端分离时,会遇到很多问题,再次罗列一下,省的采坑.
解决跨域问题前后端分离,首先解决的问题就是跨域问题.
我们需要安装用于解决跨域的插件
1pip install django-cors-middleware
在setting 中添加如下配置
12345678INSTALLED_APPS += ( 'corsheaders',)# 添加自定义中间件MIDDLEWARE += ( 'corsheaders.middleware.CorsMiddleware',)
默认生产环境配置
123456# 白名单, 域名请按照前段实际配置修改CORS_ORIGIN_WHITELIST = [ 'http://localhost:8080',]# 允许跨域使用 cookieCORS_ALLOW_CREDENTIALS = True
开发环境需要根据环境变量进行判断
123456789101112131415161718192021222324252627282930#在本地开发环境下开启跨 ...
WebSSH功能简单实现
前言前几天学习了django-channels如何基于ws建立聊天室, 针对于ws在运维方面实际用途还是很多的.今天基于ws,做一个webssh的小案例用到的新模块
Paramiko
xtermjs
Django Channel
使用WebSSH操控远程服务器在学习之前,需要简单了解一下paramiko的基本使用
1234567891011# 实例化SSHclientself.ssh = paramiko.SSHClient()#当远程服务器没有添加本地host秘钥时,将自动添加.无需使用yes or noself.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)# 连接远程服务器, 也可只用秘钥连接self.ssh.connect(hostname="192.168.233.128", port=22, username="root", password="123456")# 打开ssh channel。保持长连接,并设置终端大小self.chan = sel ...
django-rest-framework使用
前言记录一下django-rest-framework使用,方便自己查询
安装使用pip安装
针对python版本以及django版本要求
Python (3.5, 3.6, 3.7, 3.8)
Django (2.2, 3.0
1pip install djangorestframework
添加rest_framework应用到 INSTALLED_APPS 配置中
1234INSTALLED_APPS = [ ... 'rest_framework',]
定义Serializers 序列化器添加模型类我们在应用下添加一个模型类
123456from django.db import models# Create your models here.class Depart(models.Model): titel = models.CharField(verbose_name="标题", max_length=32) count = models.IntegerField(verbose_name=" ...






