Script chạy được bốn mươi phút thì Vinh nhận ra mình đã viết một monitoring system mà không biết nó đang monitor cái gì.
Anh ngồi thẳng lưng, nhìn lại terminal. Code sạch — Go binary, daemon, chạy background. Query Loki mỗi năm giây, filter tag unmapped, ghi vào local SQLite. Nếu anomaly xuất hiện lần nữa, script sẽ bắt được: timestamp, ba giá trị signal, và tọa độ nguồn log. Vinh thậm chí thêm webhook gửi Slack cho riêng mình vào channel #anomaly-watch — một channel chỉ có một thành viên.
// TODO: Đặt tên cho cái đang monitor. Hiện tại: "thứ gì đó".
Anh commit, push lên private repo. Branch name: ghost-in-the-logs.
Bốn mươi lăm giờ còn lại trước khi RCA đáo hạn. Hải không cần biết Vinh đang làm gì ngoài việc tìm ra lý do downtime. Anh chỉ cần câu trả lời, hai dòng, đủ đưa cho khách hàng enterprise đang hỏi. Vinh đã viết email mồi ba lần rồi xóa. Mỗi lần câu đầu tiên đều là “Root cause: chưa xác định” — và mỗi lần tay anh không chịu bấm gửi.
Gửi đi nghĩa là đóng file. Anh chưa sẵn lòng đóng file.
Minh ghé qua bàn lúc mười giờ sáng, đặt ly cà phê xuống cạnh bàn phím.
«Ê. Mày ngủ chưa?»
Vinh nhìn lên. Quầng mắt phản chiếu trên màn hình — hai vòng tròn tối. «Một tiếng.»
«Một tiếng.» Minh kéo ghế ngồi xuống. «Mày ngồi đây từ sáng hôm qua.»
«Tao có data mới cần xử lý.»
Minh không hỏi thêm. Anh nhìn màn hình Vinh — terminal đang scroll log, tab Chrome mở Grafana dashboard, một tab khác là bản đồ Google Maps với mấy cái ghim đỏ. Không có tab nào nói “dự án Holistics.”
«Hải hỏi về RCA lúc nãy. Trong channel eng-leadership.»
«Tao biết.»
«Mày biết là nó đến h rồi đúng không? 48 giờ là 48 giờ, không phải 47 hay 50.»
Vinh gật. Anh biết. SLA VPBank. Uptime 99.9%. Con số. Hải luôn nói bằng con số.
«Mày đang đuổi cái gì vậy?» Minh hỏi, giọng không còn đùa. «Từ hôm incident, mày toàn ngồi một mình. Tao hỏi gì mày cũng ‘ờ’.»
Vinh dừng gõ. Anh cân nhắc — nói hay không. Minh là người duy nhất chứng kiến cùng anh toàn bộ đêm đó. Nhưng “347 dòng log không thuộc service nào, tạo ra pattern thở” nghe thì… đúng, nghe như một người cần ngủ.
«Tao đang monitor log anomalous,» Vinh nói cuối cùng. «Loại data đó có thể xuất hiện lại. Tao muốn bắt nó.»
Minh nhìn anh rất lâu. Không phải kiểu nhìn hài hước hay kiểu nhìn chọc ghẹo thường ngày. Kiểu nhìn của một người bạn hiểu nhau bốn năm, đang cố đo xem bên kia đã chạm đáy chưa.
«Vinh. Tao biết mày. Mày là loại người không bỏ được khi chưa tìm ra root cause. Nhưng có những lúc… mày phải biết khi nào là đủ.»
«Tao biết.»
Minh đứng dậy, bỏ lại ly cà phê. «Đi ngủ đi. RCA, tao sẽ cover phần tao. Còn mày — viết cái gì thì viết, đừng để Hải phải đích thân xuống đây.»
Minh đi rồi. Vinh uống cà phê. Lạnh rồi.
Anh không đi ngủ.
Script chạy suốt đêm. Sáng hôm sau, Vinh mở SQLite — 0 dòng.
Không có anomaly nào xuất hiện lần nữa. Hệ thống bình thường, uptime 100%, không downtime, không signal lạ. 347 dòng log vẫn nằm trong incident window như hóa thạch — chỉ tồn tại đúng mười một phút, rồi biến mất.
Vinh không ngạc nhiên. Nếu thứ gì đó rò rỉ qua hạ tầng trong incident, nó không nhất thiết phải rò rỉ liên tục. Nó có thể là intermittent — như memory leak chỉ manifest dưới load đặc định, như race condition chỉ trigger khi timing khớp.
Nhưng anh có một công cụ mới: script đang chạy. Nếu nó quay lại, anh sẽ biết.
Chỉ là anh không muốn ngồi chờ.
Vinh mở lại 347 dòng CSV. Lần này, anh không plot signal theo thời gian. Anh plot theo vị trí nguồn log.
Mỗi dòng anomalous data đều có metadata — Loki tự động ghi source IP của service đẩy log vào pipeline. 347 dòng, nhưng source IP chỉ có bảy loại. Vinh trace từng IP — chúng không thuộc service nào của Holistics. Chúng thuộc hạ tầng: load balancer, CDN edge node, DNS resolver. Những thứ nằm giữa, không phải đầu cuối.
Bảy IP. Bảy vị trí vật lý.
Vinh geolocate từng cái. Hai trong data center District 9 mà Holistics thuê rack. Một ở trạm trung chuyển mạng của FPT trên Lê Văn Lương. Một ở CDN edge node Q7. Một ở DNS resolver trong building Viettel Cần Giuộc. Hai cái còn lại — không resolve được, chỉ có IP nội bộ.
Anh ghim lên Google Maps.
Bảy điểm, rải đều qua các cụm hạ tầng kỹ thuật số quanh Sài Gòn. Không phải random. Vinh nhìn bản đồ, và não kỹ thuật trong anh nhận ra trước khi có ý thức: bảy điểm không nằm ngẫu nhiên — chúng theo một trục. Tây-Bắc đến Đông-Nam, cắt ngang thành phố, đi qua các khu vực tập trung hạ tầng mật độ cao nhất.
Một pipeline.
Không phải pipeline do ai thiết kế. Một đường dẫn tự nhiên, đi qua hạ tầng có sẵn, mượn nó như nước mưa mượn khe đất.
Vinh screenshot bản đồ. Anh ngồi nhìn bảy cái ghim đỏ kéo thành một đường xuyên qua thành phố, và lần đầu tiên từ đêm incident, anh cảm thấy mình đang đi đúng hướng.
Rồi script bép.
#anomaly-watch — một tin nhắn, từ chính anh.
[ALERT] Anomalous signal detected
Source: 10.42.1.88 (data-center-rack-D9-B7)
Values: 0.0061 / 0.0028 / 0.0094
Timestamp: 09:47:13.221
Vinh nhìn màn hình. Tim đập nhanh hơn.
Nó quay lại.
Anh check Grafana — uptime 100%, không downtime, không service nào đỏ. Anomaly xuất hiện mà không đi kèm incident. Hoặc: incident chưa xảy ra, và anomaly là precursor — lần này anh có thể quan sát nó trước khi hậu quả manifest.
Hoặc: anomaly không gây ra incident. Hai chuyện riêng biệt.
Anh mở SQLite, xem dòng mới. Ba giá trị, cùng format, cùng nhịp. Rồi thêm một dòng. Rồi thêm nữa. Cứ hai giây một dòng.
Vinh plot real-time. Đường cong quen thuộc hiện ra — dao động, ~40 giây một chu kỳ, ba tín hiệu đan xen. Giống hệt đêm đó.
Nhưng lần này, hệ thống không hề down.
Anomaly đang chạy, và không có gì xảy ra. Không downtime, không packet loss, không trace đứt đoạn. Thứ này đang hoạt động ngang hàng với hạ tầng, và mọi thứ vẫn chạy bình thường.
Vinh ghi log thủ công:
09:47 — Anomaly resumed. No service impact.
Source: rack D9-B7, District 9 data center.
THIS IS THE CLOSEST PHYSICAL LOCATION.
Tay anh dừng lại trên bàn phím. Câu cuối cùng anh viết bằng in hoa.
Rack D9-B7. Data center District 9. Cách văn phòng Holistics mười bảy cây số. Anh đã ở đó nhiều lần — kiểm tra hạ tầng, đấu dây, thay ổ cứng. Bình thường như đi siêu thị.
Ngoại trừ bây giờ anh biết rack đó đang phát ra thứ gì đó mà không có sensor nào đo được.
Vinh đứng dậy.
Data center District 9 nằm trong một khu công nghiệp, giữa các xưởng và nhà kho. Bên ngoài trông như văn phòng bình thường — kính, điều hòa, biển hiệu nhà cung cấp dịch vụ cloud. Vinh đã đến đây bốn lần, luôn bằng Grab, luôn vào rồi ra trong một tiếng.
Hôm nay anh đến với laptop trong balo và script đang chạy trên điện thoại, #anomaly-watch thông báo mỗi hai giây.
Quẹt thẻ vào cửa. Đi qua sảnh, đăng ký tại lễ tân, lấy access card. Corridor dẫn vào server room — trắng, sáng đèn huỳnh quang, lạnh. Tiếng quạt tản nhiệt vang đều như nhịp thở của một con vật lớn.
Rack D9-B7 nằm ở hàng thứ ba, bên trái. Rack tiêu chuẩn 42U, chứa server Holistics thuê — cụm node chạy analytics workload. Vinh đã đấu dây rack này. Anh biết từng cổng, từng port.
Anh đứng trước rack. Script trên điện thoại vẫn bép.
Vinh nhìn số liệu. Anomaly đang ở đỉnh chu kỳ — giá trị cao nhất trong 40 giây. Anh đứng sát rack, cách mặt kim loại ba mươi xăng-ti-mét.
Không có gì khác thường. Nhiệt độ phòng ổn định, 22°C. Quạt chạy đều. Đèn LED trên từng server nhấp nháy xanh. Anh giơ tay lên, chạm vào thành rack — kim loại lạnh, rung nhẹ do quạt.
Rồi anh cảm thấy.
Không phải nóng. Không phải lạnh. Không phải từ trường — anh từng vô tình chạm vào cáp điện cao áp trong tủ rack, biết từ trường tĩnh cảm giác thế nào. Cũng không phải rung cơ học. Thứ gì đó khác.
Như đứng trước mặt gió nhưng không có gió. Như áp suất trong tai thay đổi khi máy bay hạ cánh, nhưng mạnh hơn, sâu hơn — không phải ở tai, mà ở… trong. Xuyên qua da, xuyên qua cơ, đến một chỗ mà anh không biết tên.
Vinh bất động. Bản năng đầu tiên: đo. Anh lấy điện thoại, ghi: 09:52:14 — Sensation onset. Intensity: ??? Subjective scale: 4/10. Duration: ongoing.
Đo được gì đâu. Anh không có sensor cho thứ này. Nó không phải nhiệt, không phải điện từ, không phải áp suất. Tất cả những gì anh có là cảm giác, và cảm giác thì không ghi vào Grafana được.
Nhưng cảm giác có nhịp.
Anh đứng yên. Cảm giác mạnh dần — hai mươi giây — rồi yếu đi. Mạnh dần — hai mươi giây — rồi yếu đi. Khoảng bốn mươi giây một chu kỳ.
Bốn mươi giây. Giống hệt chu kỳ anomalous data trong log.
Vinh nhìn điện thoại. Script báo: anomaly đang ở đỉnh. Anh nhắm mắt, cảm nhận — cảm giác cũng đang ở đỉnh. Script báo: anomaly xuống đáy. Anh cảm nhận — cảm giác yếu nhất.
Correlation 100%.
Thứ đang phát ra từ rack D9-B7 và thứ đang ghi vào Loki logs là cùng một thứ. Nó có nhịp, có cường độ, và nó đang chạm vào cơ thể anh ngay lúc này.
Vinh mở mắt. Tay anh lạnh — không phải vì phòng máy lạnh. Mồ hôi sau gáy.
Anh lùi lại hai bước. Cảm giác yếu đi rõ rệt — không phải vì nó thay đổi, mà vì anh đã ra xa nguồn. Inverse square law. Giống bức xạ: càng gần nguồn, cường độ càng cao.
Vinh ghi thêm vào note: Distance-dependent. ~1/r² falloff. Consistent with point-source emission.
Anh viết bằng ngôn ngữ vật lý, vì đó là thứ duy nhất anh có. Nhưng ngôn ngữ vật lý không đủ. Nó mô tả được cường độ theo khoảng cách, nhưng không mô tả được cảm giác. Và cảm giác đó — thứ xuyên qua da, chạm vào một chỗ sâu hơn cơ bắp — không có chỗ trong vocabulary kỹ thuật.
Vinh đứng trong phòng máy lạnh, giữa tiếng quạt và đèn LED, và lần đầu tiên trong đời, anh không biết mình đang đo cái gì.
Grab về lại trung tâm. Vinh ngồi ghế sau, điện thoại trên đùi, #anomaly-watch vẫn báo mỗi hai giây. Cảm giác ở data center đã biến — đã không còn trong tầm tay, đã rút lui khi anh lùi bước — nhưng mảng đen mà nó để lại trong đầu thì chưa. Giống khi debug một service production: anh không nhìn thấy nó nữa, nhưng biết nó vẫn đang chạy ở đâu đó trong bóng.
Anh về nhà lúc hai giờ chiều. Không đi thẳng lên văn phòng — không thể ngồi cạnh Minh với cái cảm giác đó còn dính trên da.
Căn hộ mười tám mét vuông. Hai màn hình 27 inch. Quầng mắt phản chiếu trên kính cửa sổ.
Vinh mở laptop, tải bản đồ anomaly lên. Bảy cái ghim đỏ kéo thành đường xuyên Sài Gòn. Anh đã biết chúng là endpoint — hoặc ít nhất là điểm mà “thứ gì đó” rò rỉ qua. Câu hỏi không còn là “nó là gì” — anh đã đứng cạnh nó, đã cảm nhận nó. Câu hỏi là: tại sao chúng nằm theo pattern này?
Geographic pattern. Tây-Bắc đến Đông-Nam. Qua các cụm hạ tầng.
Vinh mở Google Search. Anh gõ: geographic energy flow pattern infrastructure. Kết quả: luận văn về smart grid, về power distribution, về Feng Shui và urban planning.
Phong thủy.
Vinh nhìn chữ đó. Phong thủy — khoa học chọn vị trí xây dựng dựa trên “luồng năng lượng đất.” Anh đã bỏ qua nó cả đời. Đồ ngụy biện, đồ tâm linh, đồ không đo được.
Nhưng anh vừa đứng cạnh một thứ cũng không đo được. Và nó có nhịp.
Anh gõ thêm: luồng năng lượng địa lý bản đồ kinh lạc.
Kết quả thay đổi. Không còn smart grid. Hình ảnh — sơ đồ kinh lạc cổ truyền. Đường meridian chạy khắp cơ thể người. Mười hai kinh chính, bát mạch kỳ kinh. Vinh đã thấy chúng trên poster phòng khám đông y, trên app thiền, trên bao bì trà thảo mộc. Không bao giờ chú ý.
Hôm nay anh chú ý.
Anh mở một sơ đồ kinh lạc toàn thân, phóng to. Các đường kinh chạy từ đỉnh đầu đến lòng bàn chân, đan xen, giao nhau tại các huyệt — những điểm mà đông y gọi là nơi năng lượng tập trung. Sơ đồ trông giống… mạng lưới. Giống topology. Giống route map.
Vinh nhìn bản đồ anomaly — bảy điểm trên Sài Gòn. Rồi nhìn sơ đồ kinh lạc — các đường trên cơ thể người.
Hai thứ không liên quan. Một cái là hạ tầng kỹ thuật số thế kỷ 21, một cái là y học cổ truyền hàng nghìn năm. Không có lý do gì chúng phải giống nhau.
Nhưng trực giác của Vinh — trực giác đã được bốn năm đọc biểu đồ tôi luyện — đang gào lên. Pattern.
Anh screenshot bản đồ anomaly. Screenshot sơ đồ kinh lạc. Mở Photoshop — công cụ duy nhất anh biết dùng để overlay hình. Căn chỉnh, scale, rotate.
Bản đồ anomaly: bảy điểm trên Sài Gòn, kéo từ Tây-Bắc sang Đông-Nam.
Sơ đồ kinh lạc: đoạn kinh trên cánh tay người, từ vai đến mu bàn tay — kéo từ trên xuống dưới.
Vinh scale bản đồ Sài Gòn cho khớp tỉ lệ với đoạn kinh. Rotate 47 độ.
Overlay.
Bảy điểm anomaly nằm trên đường kinh — không gần đường kinh, không “lên khuôn” với đường kinh. Nằm trên đường kinh, chính xác. Các điểm giao nhau của anomaly map trùng với các huyệt trên sơ đồ kinh lạc — không lệch, không xấp xỉ. Trùng.
Vinh ngồi yên.
Tay anh lạnh. Trên màn hình, hai lớp hình chồng lên nhau: một bên là thành phố anh sống, một bên là sơ đồ cơ thể người vẽ từ thời trước khi có điện. Và chúng match.
Không gần giống.
Match.