Press "Enter" to skip to content

Tag: ubuntu

Ubuntu使用socat进行端口转发

以前写过一篇使用iptables进行端口转发的文章, 今天写一下使用socat将本地端口的流量转发到远程机上的过程. 不要问我这样做有什么用, 我也不知道.

安装

$ sudo apt install socat

转发TCP端口

$ sudo vim /etc/systemd/system/socat.service    # 写入如下内容
[Unit]
Description=socat (https://www.zhukun.net)
After=network-online.target
Wants=network-online.target

[Service]
User=root
Group=root
ExecStart=/usr/bin/socat TCP4-LISTEN:本地端口,reuseaddr,fork TCP4:远程IP:远程端口
Restart=always
RestartSec=2

[Install]
WantedBy=multi-user.target

转发UDP端口

$ sudo vim /etc/systemd/system/socat_udp.service    # 写入如下内容
[Unit]
Description=socat_udp (https://www.zhukun.net)
After=network-online.target
Wants=network-online.target

[Service]
User=root
Group=root
ExecStart=/usr/bin/socat -T5 UDP4-LISTEN:本地端口,reuseaddr,fork UDP4:远程IP:远程端口
Restart=always
RestartSec=2

[Install]
WantedBy=multi-user.target

启动服务

$ sudo systemctl daemon-reload
$ sudo systemctl start socat.service
$ sudo systemctl start socat_udp.service
$ sudo systemctl enable socat.service
$ sudo systemctl enable socat_udp.service
Leave a Comment

在VMware中快速构建Ubuntu虚拟机

在VMware中快速构建ubuntu虚拟机, 除了本博客先前介绍的Vagrant工具以外, 今天再介绍一个办法.

OVA (Open Virtualization Appliance, 开放虚拟化设备)是一种通用的虚拟机文件, 可以在VMware/Virtualbox等常见的虚拟机中打开. 今天我们的这种方法就是下载一个Ubuntu的ova文件并导入进VMware.

1, 下载如下ova镜像

https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.ova

2, 从VMware Workstation或者VMware Player中选择"打开虚拟机", 然后选择刚下载好的.ova文件, VMware会弹出选择虚拟机存放位置, 以及如下设定界面:
在VMware中快速构建Ubuntu虚拟机

3, 等待虚拟机初始化完成, 大约需要1-3分钟时间. 然后就可以在VMware Workstation/Player中登陆了. 默认登陆用户名是ubuntu, 密码即为刚才设定的密码. 首次登陆会要求修改密码

4, 设置ssh远程登陆
如果需要使用Xshell/Putty等工具远程登陆, 可能需要做如下操作

$ sudo vim /etc/ssh/sshd_config    # 修改如下配置, 将no改为yes
...
PasswordAuthentication yes
...

$ sudo systemctl restart sshd
Leave a Comment

Ubuntu/Fedora/Debian系统安装Zukitwo Theme

准备环境

Debian/Ubuntu/Mint系统
apt install gtk2-engines-murrine gtk2-engines-pixbuf fonts-roboto ninja-build git sassc

Fedora系统
dnf install gtk-murrine-engine gtk2-engines google-roboto-fonts ninja-build git sassc

安装meson

sudo apt install python3-pip
sudo pip3 install meson

正式安装

git clone https://github.com/lassekongo83/zuki-themes.git
cd zuki-themes
/usr/local/bin/meson build
sudo ninja -C build install

部分文档来自原作者github.

1 Comment

ubuntu替换国内源

ubuntu使用国内源, 基本上只需要2命令就可以了

sudo cp /etc/apt/sources.list /etc/apt/sources.list.ori
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
Leave a Comment

从宿主机获得Docker内部IP

在Docker内部获取IP

Docker内部里面,ipconfig/ip 等命令是无法使用的,正确的命令是

$ hostname -I
172.24.116.11

在宿主机获得Docker的IP

假设你已经有了一个Docker,ID是f864187a2406

$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' f864187a2406
172.24.116.11

$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' f864187a2406
172.24.116.11

$ docker inspect f864187a2406 | egrep -e "(IPAddress|Id)"
        "Id": "f864187a24065636dc0cf9e87bdf2971fea27d4014cf981eaac6b971506b2776",
                "deployId": "8747",
            "SecondaryIPAddresses": null,
            "IPAddress": "172.24.116.11",
                    "IPAddress": "172.24.116.11",
Leave a Comment

Prometheus add custom exporter

Prometheus(中文名:普罗米修斯)是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). 使用Go语言开发, 基本原理是通过HTTP协议周期性抓取被监控组件的状态. Prometheus获取数据的策略是Pull而不是Push, 也就是说, 它会自己去抓取, 而不用你来推送. 抓取使用的是HTTP协议, 在配置文件中指定目标程序的端口, 路径及间隔时间即可.

目前互联网公司常用的组件大部分都有exporter可以直接使用, 比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等).

当Prometheus的node_exporter中没有我们需要的一些监控项时,就可以如zabbix一样添加一些自定义的metrics,让其支持我们所需要的监控项。node_exporter 可在启动时指定路径,并将该路径下的 *.prom 识别为监控数据文件。

准备获取metrics的脚本

$ cat /opt/monitor/get_info.sh
#! /bin/bash

echo Logical_CPU_core_total  `cat /proc/cpuinfo| grep processor| wc -l`
echo logined_users_total     `who | wc -l`;
echo procs_total `ps aux|wc -l`
echo procs_zombie       `ps axo pid=,stat=|grep Z|wc -l`

测试脚本执行情况

$ bash get_info.sh
Logical_CPU_core_total 2
logined_users_total 1
procs_total 148
procs_zombie 0

设置定时任务

* * * * * bash /opt/monitor/get_info.sh > /opt/monitor/get_info.prom

启动 node_exporter

启动 node_exporter 时指定*.prom 数据文件的路径

./node_exporter --collector.textfile.directory=/opt/monitor/

验证metrics

$ curl 127.0.0.1:9100/metrics|grep -E Logical_CPU_core_total|logined_users_total|procs_total|procs_zombie
# TYPE Logical_CPU_core_total untyped
Logical_CPU_core_total 2
# HELP logined_users_total Metric read from /opt/monitor/get_info.prom
# TYPE logined_users_total untyped
logined_users_total 1
# HELP procs_total Metric read from /opt/monitor/get_info.prom
# TYPE procs_total untyped
procs_total 151
# HELP procs_zombie Metric read from /opt/monitor/get_info.prom
# TYPE procs_zombie untyped
procs_zombie 0

参考文档:
Prometheus 自定义exporter 监控key

Leave a Comment